Python 2 で JSON を解析するときに文字列型を保持する
Python 2 で JSON を解析すると、文字列値が Unicode オブジェクトにキャストされる場合があります。これは、文字列オブジェクトのみを必要とするライブラリとインターフェースするときに問題が発生する可能性があります。
JSON から Unicode オブジェクトへの変換
JSON または simplejson を使用して ASCII エンコードされたテキスト ファイルをロードする場合Python 2 では、文字列値が Unicode オブジェクトに変換されるときに問題が発生する可能性があります。これは、テキストに Unicode を前提とする Python 2 のデフォルトのエンコーディング メカニズムによって説明されます。
代替解析オプション: PyYAML
この問題を解決するには、PyYAML を使用して JSON を解析することを検討してください。ファイル。 PyYAML はデフォルトでキーと値を文字列オブジェクトとして扱い、文字列型を保持するための簡単なソリューションを提供します。
例
<code class="python">import yaml list_dump = json.dumps(['a', 'b']) yaml.safe_load(list_dump) # Returns string objects: ['a', 'b']</code>
メモ:
変換関数
PyYAML がオプションではない場合、または Unicode を使用する必要がある場合は、Mark によって提案されたような変換関数Amery を利用することができます。
例
<code class="python">def convert_to_str(data): """Convert Unicode values to strings.""" if isinstance(data, dict): return {convert_to_str(k): convert_to_str(v) for k, v in data.items()} elif isinstance(data, list): return [convert_to_str(v) for v in data] elif isinstance(data, unicode): return data.encode('utf-8') else: return data</code>
JSON ロード時にこの関数を object_hook として使用すると、Unicode 値が文字列に変換されます。
以上がPython 2 で JSON を解析するときに文字列型を保持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。