从单个文件中提取多个 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中文网其他相关文章!