如何使用Python解析WIkidata JSON(.bz2)文件?

时间:2018-01-03 13:39:03

标签: python json wikidata bz2

我想看看使用维基数据的实体和关系。我下载了维基数据JSON转储(from here .bz2文件,大小约为18 GB)。

但是,我无法打开文件,它对我的​​电脑来说太大了。

有没有办法在不提取完整的.bz2的情况下查看文件     文件。特别是使用 Python ,我知道有一个PHP转储     读者(here),但我无法使用它。

2 个答案:

答案 0 :(得分:2)

您可以使用BZ2File界面来操作压缩文件。但是你不能使用json模块来访问它的信息,它会占用太多空间。您必须索引文件,这意味着您必须逐行读取文件并在Dictionary(哈希表)中保存有趣对象的位置和长度,然后您可以提取给定对象并使用json模块加载它。

答案 1 :(得分:0)

我想出了一种策略,该策略允许使用json模块访问信息而无需打开文件:

.png

通过这种方式import bz2 import json with bz2.open(filename, "rt") as bzinput: lines = [] for i, line in enumerate(bzinput): if i == 10: break tweets = json.loads(line) lines.append(tweets) 将成为您可以轻松操作的字典列表,例如,通过删除不需要的键来减小字典的大小。

还请注意,(显然)条件lines可以任意更改以适合任何需要的人。例如,您可以一次解析某些行,对其进行分析,然后在i==10文件中写入原始文件中您真正想要的行的索引。仅读取那些行就足够了(使用txt循环中i中的类似条件)。