【发布时间】:2014-02-27 07:47:47
【问题描述】:
我正在尝试加载一个用换行符分隔的 JSON 字符串填充的大文件(2GB 大小)。例如:
{
"key11": value11,
"key12": value12,
}
{
"key21": value21,
"key22": value22,
}
…
我现在导入的方式是:
content = open(file_path, "r").read()
j_content = json.loads("[" + content.replace("}\n{", "},\n{") + "]")
这似乎是一种 hack(在每个 JSON 字符串之间添加逗号以及一个开始和结束方括号以使其成为正确的列表)。
有没有更好的方法来指定 JSON 分隔符(换行符 \n 而不是逗号 ,)?
另外,Python 似乎无法为从 2GB 数据构建的对象正确分配内存,有没有办法在我逐行读取文件时构造每个 JSON 对象?谢谢!
【问题讨论】:
-
此时只需读取每一行,构造一个json对象
-
@njzk2:我认为问题在于 JSON 对象内部有换行符,而不仅仅是它们之间,对吧?
-
JSON 对象之间有换行符,在它们内部,是的。替换函数之所以有效,是因为换行符分隔右大括号和左大括号(“}”和“{”)的唯一位置是对象之间。我仍然不想依赖它来加载 JSON。
-
@Arkady,Cat:看到我的答案的结尾,有人写了一个解析器来说明这类事情,我认为这应该可以解决你的问题。
标签: python json parsing large-files