從單一檔案中提取多個JSON 物件
在遇到包含多個物件的JSON 檔案的情況下,隔離特定字段的任務變得至關重要。一種方法涉及利用 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中文網其他相關文章!