在python中创建大型JSON文件的子集

时间:2017-04-21 11:43:21

标签: python json

我对Python并不太熟悉,我有一个大型的JSON文件,我首先要对它进行预处理。

我有一个-not proper-JSON文件,如下所示:

{"name" : "Bob", "text" : "abc", "timestamp": "09 13, 2009"}

{"name" : "..", "text" : "..", "timestamp": ".."}


...


{"name" : "..", "text" : "..", "timestamp": ".."}

这个文件里面有超过一百万个这样的字典对象,我想迭代每个字典,只保留"name""text"的密钥和对应值,并留下{{1}出去

我怎样才能做到这一点?我想这样做的原因是试图抛出所有信息,我不需要缩小数据集的大小。

谢谢!

编辑:

我正在尝试运行的代码如下

"timestamp"

然而,这会返回内存错误,它会破坏文件的1/3左右。

2 个答案:

答案 0 :(得分:0)

(假设文件是​​有效的json,你的jist在你的问题中省略了逗号和大括号)

如果你可以使用json.load(open(filename))而不会得到异常 - 这可能是最简单的选择。 如果你不能 - 你最好的朋友是ijson(https://pypi.python.org/pypi/ijson)或另一个流媒体json库,可以通过chunk读取json块。

更新: 经过深思熟虑后,您还可以尝试使用优秀的文本编辑器将文件拆分为json.load可以处理的几个文件

答案 1 :(得分:0)

您使用的是* nix环境吗?您可以使用split命令,如下所示。

split --lines=30000 --numeric-suffixes --suffix-length=5 file.json chunk

然后在每个块上运行相同的代码。 (迭代块可能会导致相同的内存错误。尝试一下。)