単一ファイルから複数の JSON オブジェクトを抽出する
複数のオブジェクトを含む JSON ファイルが発生した場合、特定のフィールドを分離するタスクが不可欠になります。 1 つのアプローチには、json.JSONDecoder.raw_decode メソッドを利用することが含まれます。
raw_decode は、大きな JSON 文字列を反復的にデコードする機能を提供します。空白以外の最後の位置を追跡しながら、有効な JSON オブジェクトが見つかるまで解析を続けます。これにより、前の終了位置を引数として指定することで、raw_decode を繰り返し呼び出すことができます。
ただし、Python の JSON モジュールには空白のない入力が必要です。したがって、前の空白を削除する前処理が必要です。提供されたコードは、NOT_WHITESPACE 正規表現を利用して最初の空でない文字を見つけることでこの問題に対処します。
<code class="python"># Extract Multiple JSON Objects 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 accordingly raise yield obj # Example usage s = """ {"a": 1} [ 1 , 2 ] """ for obj in decode_stacked(s): print(obj)</code>
出力は、入力文字列から複数の JSON オブジェクトが正常に抽出されたことを示しています。
{'a': 1} [1, 2]
以上がPython で単一のファイルから複数の JSON オブジェクトを抽出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。