我有超过一百万个文本文件被压缩成 40 个 zip 文件。我还列出了大约 500 个手机型号名称。我想找出文本文件中提到特定模型的次数。
是否有任何 python 模块可以在不解压缩文件的情况下对文件进行正则表达式匹配。有没有一种简单的方法可以在不解压缩的情况下解决这个问题?
我有超过一百万个文本文件被压缩成 40 个 zip 文件。我还列出了大约 500 个手机型号名称。我想找出文本文件中提到特定模型的次数。
是否有任何 python 模块可以在不解压缩文件的情况下对文件进行正则表达式匹配。有没有一种简单的方法可以在不解压缩的情况下解决这个问题?
没有什么可以自动执行您想要的操作。
但是,有一个 python zipfile 模块可以让这很容易做到。以下是如何遍历文件中的行。
#!/usr/bin/python
import zipfile
f = zipfile.ZipFile('myfile.zip')
for subfile in f.namelist():
print subfile
data = f.read(subfile)
for line in data.split('\n'):
print line
您可以遍历 zip 文件,使用 zipfile 模块读取单个文件并在这些文件上运行您的正则表达式,从而无需一次解压缩所有文件。
我相当确定您不能对压缩数据运行正则表达式,至少没有意义。
要访问 zip 文件的内容,您必须将其解压缩,尽管 zipfile 包使这相当容易,因为您可以单独解压缩存档中的每个文件。
读入 ZIP 的霍夫曼编码然后将正则表达式翻译成霍夫曼代码,这不是(至少理论上)可能吗?这可能比首先解压缩数据然后运行正则表达式更有效吗?
(注意:我知道这不会那么简单:您还必须处理 ZIP 编码的其他方面——文件布局、块结构、反向引用——但可以想象这可能是相当轻量级的。)
编辑:另请注意,仅使用该解决方案可能更明智zipfile
。