Python 2 で JSON から文字列オブジェクトを取得するには?

Patricia Arquette
リリース: 2024-11-03 08:39:30
オリジナル
592 人が閲覧しました

How to Get String Objects from JSON in Python 2?

Python 2 で JSON から文字列オブジェクトを取得する方法

Python 2 で ASCII エンコードされたテキスト ファイルから JSON データを解析する場合、次のことが可能です。文字列値が Unicode オブジェクトにキャストされるという問題が発生します。これは、文字列オブジェクトのみを受け入れるライブラリを使用する場合に問題になる可能性があります。

軽量の解決策: PyYAML

この問題を解決するには、PyYAML ライブラリを利用できます。 JSON は YAML のサブセットであるため、PyYAML を使用して JSON ファイルを解析し、Unicode オブジェクトではなく文字列としてキーと値を返すことができます。以下に例を示します。

<code class="python">import yaml

original_list = ['a', 'b']
yaml_list = yaml.safe_load(yaml.dump(original_list))

print(type(yaml_list[0]))  # Output: <class 'str'></code>
ログイン後にコピー

変換アプローチ

PyYAML を使用できない場合は、変換関数の使用を検討してください。 Mark Amery の変換関数は簡単で効果的です:

<code class="python">def unicode_to_str(obj):
    if isinstance(obj, unicode):
        return obj.encode('utf-8')
    elif isinstance(obj, list):
        return [unicode_to_str(x) for x in obj]
    elif isinstance(obj, dict):
        return {unicode_to_str(k): unicode_to_str(v) for k, v in obj.items()}
    return obj</code>
ログイン後にコピー

注意事項:

  • JSON ファイルに非 ASCII 文字が含まれている場合、次のように解析されます。 PyYAML による Unicode オブジェクト。
  • セキュリティ上の懸念が生じる可能性があるため、PyYAML のload() 関数の使用は避けてください。代わりに、safe_load() を使用してください。
  • YAML 1.2 またはそれより低い番号のサポートが必要な場合は、Ruamel YAML の使用を検討してください。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート