【发布时间】:2016-05-13 02:26:49
【问题描述】:
我正在尝试使用 ijson 包解析一个大的 (~100MB) json 文件,它允许我以有效的方式与文件交互。然而,在写了一些这样的代码之后,
with open(filename, 'r') as f:
parser = ijson.parse(f)
for prefix, event, value in parser:
if prefix == "name":
print(value)
我发现代码只解析文件的第一行,而不解析文件的其余行!!
这是我的 json 文件的一部分的样子:
{"name":"accelerator_pedal_position","value":0,"timestamp":1364323939.012000}
{"name":"engine_speed","value":772,"timestamp":1364323939.027000}
{"name":"vehicle_speed","value":0,"timestamp":1364323939.029000}
{"name":"accelerator_pedal_position","value":0,"timestamp":1364323939.035000}
在我看来,ijson 只解析一个 json 对象。
有人可以建议如何解决这个问题吗?
【问题讨论】:
-
嗯,你提供的块看起来像一个 set JSONs。那就是你应该逐行阅读并单独解析它。
-
BTW 因为每一行都很短,所以不需要ijson,可以使用
json.loads()。