7

我有超过一百万个文本文件被压缩成 40 个 zip 文件。我还列出了大约 500 个手机型号名称。我想找出文本文件中提到特定模型的次数。

是否有任何 python 模块可以在不解压缩文件的情况下对文件进行正则表达式匹配。有没有一种简单的方法可以在不解压缩的情况下解决这个问题?

4

4 回答 4

10

没有什么可以自动执行您想要的操作。

但是,有一个 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
于 2008-08-18T08:19:06.390 回答
0

您可以遍历 zip 文件,使用 zipfile 模块读取单个文件并在这些文件上运行您的正则表达式,从而无需一次解压缩所有文件。

我相当确定您不能对压缩数据运行正则表达式,至少没有意义。

于 2008-08-18T08:06:30.707 回答
0

要访问 zip 文件的内容,您必须将其解压缩,尽管 zipfile 包使这相当容易,因为您可以单独解压缩存档中的每个文件。

Python 压缩文件模块

于 2008-08-18T08:10:57.577 回答
0

读入 ZIP 的霍夫曼编码然后将正则表达式翻译成霍夫曼代码,这不是(至少理论上)可能吗?这可能比首先解压缩数据然后运行正则表达式更有效吗?

(注意:我知道这不会那么简单:您还必须处理 ZIP 编码的其他方面——文件布局、块结构、反向引用——但可以想象这可能是相当轻量级的。)

编辑:另请注意,仅使用该解决方案可能更明智zipfile

于 2008-09-03T14:42:10.323 回答