ホームページ >バックエンド開発 >Python チュートリアル >Python で複数の JSON オブジェクトを含む JSON ファイルを解析する方法

Python で複数の JSON オブジェクトを含む JSON ファイルを解析する方法

DDD
DDDオリジナル
2024-12-04 02:55:10304ブラウズ

How to Parse a JSON File Containing Multiple JSON Objects in Python?

複数の JSON オブジェクトを含む JSON ファイルのロードと解析

単一のオブジェクトまたは配列内にすべてのデータをカプセル化する標準の JSON ファイルとは異なり、特定の JSON 形式では、個々のオブジェクトがテキスト ファイル内の別の行として保存されます。これにより、このようなファイルを Python で解析しようとするときに問題が発生する可能性があります。

ValueError への対処

Python の json.load() 関数を使用して JSON ファイルをロードする場合複数のオブジェクトを使用すると、「ValueError: Extra data」例外が発生する可能性があります。このエラーは、最初に解析されたオブジェクトの後にファイルに予期しないデータが含まれていることを示します。

解決策: 行ごとの解析

この問題を処理するには、次のことを行う必要があります。ファイル内の各行は独立した JSON オブジェクトとして扱われます。現在のコードを次のコードに置き換えます。

import json

data = []
with open('file') as f:
    for line in f:
        data.append(json.loads(line))

このコードは、ファイル内の各行を反復処理し、JSON オブジェクトとして解析し、リストに追加します。

大きなファイルに関する考慮事項

JSON ファイルが特に大きい場合、すべてのオブジェクトを 1 つのリストに追加すると消費される可能性があります過剰なメモリ。これを軽減するには、次の行に進む前に各オブジェクトを個別に処理します。回避:

data = []  # List of all objects

代わりに、必要に応じて各オブジェクトを処理します:

for line in f:
    process_object(json.loads(line))

区切られた JSON オブジェクトの処理

JSON ファイルに個別のオブジェクトが含まれている場合カンマや改行などの区切り文字で区切られたオブジェクトがある場合、次の手法を使用して各オブジェクトを解析できます。オブジェクト:

import json, io

# Read delimited JSON objects from a file
with open('file') as f:
    json_string = f.read()

# Create a buffered reader
json_buffer = io.StringIO(json_string)

while True:
    # Read next JSON object from the buffer
    json_object = json.load(json_buffer)
    
    # Process JSON object
    if not json_object:  # Reached the end of the file
        break

以上がPython で複数の JSON オブジェクトを含む JSON ファイルを解析する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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