ホームページ  >  記事  >  バックエンド開発  >  Python 2 で JSON を解析するときに文字列型を保持するにはどうすればよいですか?

Python 2 で JSON を解析するときに文字列型を保持するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-03 00:38:29735ブラウズ

How to Preserve String Types When Parsing JSON in Python 2?

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>

メモ:

  • JSON 解析には PyYAML のsafe_load 関数が推奨されます。
  • Unicode 文字は引き続き文字列オブジェクトに保持されます。
  • Ruamel YAML は、より多くの機能を備えた代替 YAML パーサーです。高度な機能。

変換関数

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 サイトの他の関連記事を参照してください。

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