我正在尝试使用wikimedia转储文件(。xml.bz2)使用Python。我从this文章开始作为指南。它涉及多种语言,我想把所有的步骤组合成一个单独的python项目。我找到了这个过程所需的几乎所有库。现在唯一的困难是有效地分割大的。xml.bz2在搜索操作期间,将文件分为多个较小的文件,以便更快地进行分析。在
我知道python中存在bz2库,但它只提供压缩和解压缩操作。但是我需要一些类似于bz2recover
从命令行执行的操作,它将大文件拆分成许多较小的垃圾。在
更重要的一点是,拆分不应分割已压缩的xml文档中以<page>
开头、以</page>
结尾的页面内容。在
以前是否有一个库可以处理这种情况,或者代码必须从头开始编写?(任何大纲/伪代码都会非常有用)。在
注意:我想使结果包跨平台兼容,因此不能使用操作系统特定的命令。在
最后我自己写了一个Python脚本:
好吧,如果您有一个命令行工具可以提供您想要的功能,那么您总是可以使用subprocess模块将其包装在一个调用中
您所引用的方法是一个相当肮脏的黑客:)
我编写了一个离线Wikipedia工具,Sax完全解析了这个转储文件。如果您只需将未压缩的xml从适当的bzip2解压器导入stdin,那么吞吐量是可用的。尤其是如果它只是一个巫术。在
作为一种简单的测试方法,我只需压缩每个页面并将其写入一个大文件,并将偏移量和长度保存在cdb(small key-value store)中。这可能是一个有效的解决方案。在
请记住,mediawiki标记是我很长时间以来遇到的最可怕的sh*t。但如果是巫术的话,我也许可以处理。在
相关问题 更多 >
编程相关推荐