ホームページ > バックエンド開発 > Python チュートリアル > Python の「json.JSONDecoder.raw_decode」を使用して単一のファイルから複数の JSON オブジェクトを効率的に抽出する方法

Python の「json.JSONDecoder.raw_decode」を使用して単一のファイルから複数の JSON オブジェクトを効率的に抽出する方法

Mary-Kate Olsen
リリース: 2024-10-29 04:48:02
オリジナル
772 人が閲覧しました

How to Extract Multiple JSON Objects from a Single File Efficiently Using Python's `json.JSONDecoder.raw_decode`?

単一ファイルから複数の JSON オブジェクトを繰り返し抽出する

複数の JSON オブジェクトを含む JSON ファイルを扱う場合、効率的な方法を見つけることが重要です各オブジェクトから特定のデータ要素を抽出します。

1 つの方法は、Python の json.JSONDecoder.raw_decode 関数を利用することです。この関数を使用すると、ルート配列でラップされていない場合でも、複数のオブジェクトを含む大きな JSON 文字列をデコードできます。

まず、JSON ドキュメントから先頭の空白を削除する必要があります。その後、ループ内で raw_decode を使用してオブジェクトを 1 つずつ抽出できます。この関数は、解析されたオブジェクトが終了した最後の位置とオブジェクト自体を返します。

このアプローチを示すコード スニペットは次のとおりです。

<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 error
            raise
        yield obj</code>
ログイン後にコピー

このメソッドを使用すると、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>
ログイン後にコピー

コードでは次のループを使用して、「タイムスタンプ」と「有用性」の値を抽出できます。

<code class="python">import pandas as pd

data = []
for obj in decode_stacked(json_string):
    data.append([obj["Timestamp"], obj["Usefulness"]])

df = pd.DataFrame(data, columns=["Timestamp", "Usefulness"])</code>
ログイン後にコピー

これこのメソッドは、単一のファイルから複数の JSON オブジェクトを抽出する柔軟かつ効率的な方法を提供し、複雑な JSON 構造から表形式にデータを収集できます。

以上がPython の「json.JSONDecoder.raw_decode」を使用して単一のファイルから複数の JSON オブジェクトを効率的に抽出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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