使用 ijson 从 json 文件中提取值
extracting values from json file using ijson
我有一个很大的 JSON 文件,如下所示:
{"details":{
"1000":[
["10","Thursday","1","19.89"],
["12","Monday","3","20.90"],
...
]
"1001":[
["30","Sunday","11","80.22"],
["88","Wednesday","22","8.29"],
...
]
}
}
现在我使用 ijson[=28= 从“details”值中提取“1000”、“1001”等变量中的列表](交互式 Json)使用下面给出的代码:
import ijson as ijson
filename='Clean_Details.json'
with open(filename,'r') as f:
objects=ijson.items(f,'details.1001.item')
for row in objects:
print(row)
print("Done")
但问题是:for 循环在上面的代码中没有终止。在 1001 中打印最终列表后,它保持 运行.
我猜测上面代码中的 Generator(objects) 没有遇到 StopIteration 不知道为什么。
有人可以帮忙吗?
如果能提供一点帮助,我们将不胜感激。
好的,因为 JSON 文件的 大尺寸 > 800MB 对于超过一百万条记录,解析需要时间才能完成,因此
循环最终终止,但需要一些时间才能完成。在普通配置的电脑上肯定需要一些时间。
同时使用:
import ijson as ijson
在非常大的文件上速度较慢,因为大部分解析都是使用 python 后端代码进行的,因此为了提高速度,
更好用
import ijson.backends.yajl2_cffi as ijson
因为它有一个使用 cffi 的 C 语言后端,这确实缩短了上述代码的 运行 时间。
我有一个很大的 JSON 文件,如下所示:
{"details":{
"1000":[
["10","Thursday","1","19.89"],
["12","Monday","3","20.90"],
...
]
"1001":[
["30","Sunday","11","80.22"],
["88","Wednesday","22","8.29"],
...
]
}
}
现在我使用 ijson[=28= 从“details”值中提取“1000”、“1001”等变量中的列表](交互式 Json)使用下面给出的代码:
import ijson as ijson
filename='Clean_Details.json'
with open(filename,'r') as f:
objects=ijson.items(f,'details.1001.item')
for row in objects:
print(row)
print("Done")
但问题是:for 循环在上面的代码中没有终止。在 1001 中打印最终列表后,它保持 运行.
我猜测上面代码中的 Generator(objects) 没有遇到 StopIteration 不知道为什么。
有人可以帮忙吗? 如果能提供一点帮助,我们将不胜感激。
好的,因为 JSON 文件的 大尺寸 > 800MB 对于超过一百万条记录,解析需要时间才能完成,因此
循环最终终止,但需要一些时间才能完成。在普通配置的电脑上肯定需要一些时间。
同时使用:
import ijson as ijson
在非常大的文件上速度较慢,因为大部分解析都是使用 python 后端代码进行的,因此为了提高速度,
更好用
import ijson.backends.yajl2_cffi as ijson
因为它有一个使用 cffi 的 C 语言后端,这确实缩短了上述代码的 运行 时间。