gpt4 book ai didi

python - 如何解析包含多个对象的单行json文件

转载 作者:行者123 更新时间:2023-12-01 01:03:23 25 4
gpt4 key购买 nike

我需要读取一些 JSON 数据进行处理。我有一个包含多个 JSON 对象的单行文件,如何解析它?

我希望输出是一个每个对象只有一行的文件。

我尝试了一种强力方法,该方法将递归地使用 json.loads 来检查 json 是否有效,但每次运行程序时都会得到不同的结果

import json

with open('sample.json') as inp:
s = inp.read()

jsons = []

start, end = s.find('{'), s.find('}')
while True:
try:
jsons.append(json.loads(s[start:end + 1]))
print(jsons)
except ValueError:
end = end + 1 + s[end + 1:].find('}')
else:
s = s[end + 1:]
if not s:
break
start, end = s.find('{'), s.find('}')

for x in jsons:
writeToFilee(x)

json格式可以看这里 https://pastebin.com/DgbyjAG9

最佳答案

为什么不只使用 JSONDecodeErrorpos 属性告诉你在哪里界定事物?

类似于:

import json

def json_load_all(buf):
while True:
try:
yield json.loads(buf)
except json.JSONDecodeError as err:
yield json.loads(buf[:err.pos])
buf = buf[err.pos:]
else:
break

与您的演示数据一起使用:

with open('data.json') as fd:
arr = list(json_load_all(fd.read()))

给了我两个元素,但我想你还有更多?

要使用标准库完成此操作,写出的内容将类似于:

with open('data.json') as inp, open('out.json', 'w') as out:
for obj in json_load_all(inp.read()):
json.dump(obj, out)
print(file=out)

否则jsonlines包很适合处理这种数据格式

关于python - 如何解析包含多个对象的单行json文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55593253/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com