ホームページ  >  記事  >  バックエンド開発  >  Python 2でJSONからUnicodeの代わりに文字列オブジェクトを取得するにはどうすればよいですか?

Python 2でJSONからUnicodeの代わりに文字列オブジェクトを取得するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-03 11:02:02276ブラウズ

How to Get String Objects Instead of Unicode from JSON in Python 2?

JSON から Unicode の代わりに文字列オブジェクトを取得する (Python 2)

Python 2 で ASCII エンコードされたテキスト ファイルから JSON を解析する場合、デフォルトの動作は文字列を表すことです値を Unicode オブジェクトとして扱います。これは、文字列オブジェクトのみを受け入れるライブラリを操作する場合に問題を引き起こす可能性があります。

幸いなことに、Unicode オブジェクトの代わりに文字列オブジェクトを取得する方法がいくつかあります。

PyYAML を使用する

PyYAML は、JSON のスーパーセットである YAML を解析するための Python ライブラリです。これは、JSON 構造を保持しながら文字列オブジェクトを取得する便利な方法を提供します。

<code class="python">import yaml

json_string = '["a", "b"]'
data = yaml.safe_load(json_string)  # Returns a list of strings</code>

注: このメソッドは、ASCII エンコードされたデータに対してのみ機能します。

Unicode の変換文字列オブジェクトへ

データが Unicode でエンコードされている場合は、変換関数を使用して Unicode 文字列を通常の文字列に変換できます。

<code class="python">def unicode_to_string(obj):
    if isinstance(obj, basestring):
        return obj.encode('utf-8')
    elif isinstance(obj, dict):
        return dict((unicode_to_string(k), unicode_to_string(v)) for k, v in obj.iteritems())
    elif isinstance(obj, list):
        return [unicode_to_string(v) for v in obj]
    else:
        return obj

# Usage:
json_string = '["\u00e1", "\u00e9"]'
data = json.loads(json_string)
converted_data = unicode_to_string(data)  # Converts Unicode strings to strings</code>

オブジェクト フックの使用

オブジェクトフックを使用して、シリアル化中に Unicode 文字列を文字列に変換することもできます:

<code class="python">import json

def object_hook(obj):
    if isinstance(obj, unicode):
        return obj.encode('utf-8')
    return obj

# Usage:
json_string = '["a", "b"]'
data = json.loads(json_string, object_hook=object_hook)  # Converts Unicode strings to strings during deserialization</code>

以上がPython 2でJSONからUnicodeの代わりに文字列オブジェクトを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。