尝试使用ijson流式处理我的(非常大的)json文件 - 格式错误吗?
我正在尝试用Python中的ijson来处理一个很大的json文件。这是我第一次尝试这样做。
我现在的代码非常简单:
with open('file.json', 'rb') as f:
j = ijson.items(f, 'item')
for item in j:
print('x')
但是运行后出现了“尾部垃圾”错误——基本上文件中的第二个项目被认为是垃圾,我觉得是因为文件格式的问题。
我的json文件是来自kaggle的这个链接,格式是这样的:
{"_id":{"$oid":"6457879fd1187d621cbbba9c"},"sourceCC":"us",...etc...}
{"_id":{"$oid":"6457879fd1187d621cbddd8a"},"sourceCC":"us",...etc...}
这个文件大约有3GB,所以我无法直接打开它。
如果我使用'multiple_items=True',我觉得它会把所有项目都当作同一个项目的多个值来处理,这样就不会报错,但也不会返回其他任何东西。
我该怎么办呢?
谢谢。
1 个回答
1
这其实不是一个完整的JSON文档。它是一系列用换行符连接在一起的JSON文档。你不需要使用ijson
来读取它;你可以逐行读取,然后使用内置的json
模块来处理。
import json
with open('myfile.json') as fd:
for line in fd:
obj = json.loads(line)
# do something with obj here