ホームページ >バックエンド開発 >Python チュートリアル >Python で複数の埋め込みオブジェクトを含む JSON データを効率的に解析するにはどうすればよいですか?

Python で複数の埋め込みオブジェクトを含む JSON データを効率的に解析するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-29 12:32:29522ブラウズ

How to Efficiently Parse JSON Data with Multiple Embedded Objects in Python?

複数の埋め込みオブジェクトによる JSON 解析の課題

この記事では、複数のネストされた JSON オブジェクトを含む JSON ファイルからデータを抽出するという課題について説明します。このようなファイルは、大規模なデータセットを扱うときに問題を引き起こすことがよくあります。

問題ステートメント

次のように、複数の JSON オブジェクトを含む JSON ファイルについて考えてみましょう。

<code class="json">{"ID":"12345","Timestamp":"20140101", "Usefulness":"Yes",
 "Code":[{"event1":"A","result":"1"},…]}
{"ID":"1A35B","Timestamp":"20140102", "Usefulness":"No",
 "Code":[{"event1":"B","result":"1"},…]}
{"ID":"AA356","Timestamp":"20140103", "Usefulness":"No",
 "Code":[{"event1":"B","result":"0"},…]}
…</code>

タスクは抽出することです。各オブジェクトの「タイムスタンプ」と「有用性」の値をデータ フレームに変換します:

Timestamp Usefulness
20140101 Yes
20140102 No
20140103 No
... ...

ソリューションの概要

この課題に対処するために、Python の json.JSONDecoder.raw_decode メソッドを採用します。 。この方法では、「積み重ねられた」JSON オブジェクトの大きな文字列をデコードできます。解析されたオブジェクトの最後の位置と有効なオブジェクトを返します。返された位置を raw_decode に戻すことで、その時点から解析を再開できます。

実装

<code class="python">from json import JSONDecoder, JSONDecodeError
import re

NOT_WHITESPACE = re.compile(r'\S')

def decode_stacked(document, pos=0, decoder=JSONDecoder()):
    while True:
        match = NOT_WHITESPACE.search(document, pos)
        if not match:
            return
        pos = match.start()
        
        try:
            obj, pos = decoder.raw_decode(document, pos)
        except JSONDecodeError:
            # Handle errors appropriately
            raise
        yield obj

s = """

{“a”: 1}  


[
1
,   
2
]


"""

for obj in decode_stacked(s):
    print(obj)</code>

このコードは、文字列 s 内の JSON オブジェクトを反復処理し、各オブジェクトを出力します。

{'a': 1}
[1, 2]

結論

提供されたソリューションは、単一のファイルに埋め込まれた複数のネストされた JSON オブジェクトからデータを抽出するという課題に効果的に対処します。 json.JSONDecoder.raw_decode メソッドを利用し、潜在的なエラーを処理することで、大規模なデータセットを効率的に処理できます。 decode_stacked 関数は、このようなファイル形式を処理するための再利用可能なツールとして使用できます。

以上がPython で複数の埋め込みオブジェクトを含む JSON データを効率的に解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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