gpt4 book ai didi

python - 使用 ijson 从 json 文件中提取值

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

我有一个很大的 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(交互式 Json)从“details”值中提取“1000”、“1001”等变量中存在的列表如下:

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语言后端,这确实提高了上述代码的运行时间。

关于python - 使用 ijson 从 json 文件中提取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39025988/

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