Python 2 で ASCII エンコードされたテキスト ファイルから JSON を解析する場合、デフォルトの動作は文字列を表すことです値を Unicode オブジェクトとして扱います。これは、文字列オブジェクトのみを受け入れるライブラリを操作する場合に問題を引き起こす可能性があります。
幸いなことに、Unicode オブジェクトの代わりに文字列オブジェクトを取得する方法がいくつかあります。
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 文字列を通常の文字列に変換できます。
<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 サイトの他の関連記事を参照してください。