在zip文件中是否有用于正则表达式匹配的python模块

时间:2020-03-05 18:40:16  来源:igfitidea点击:

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

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

解决方案

回答

我们可以循环浏览zip文件,使用zipfile模块读取单个文件,然后在这些文件上运行正则表达式,从而不必一次解压缩所有文件。

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

回答

要访问zip文件的内容,我们必须解压缩该文件,尽管zipfile程序包使此操作相当容易,因为我们可以分别解压缩存档中的每个文件。

Python zipfile模块

回答

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

但是,有一个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的霍夫曼编码,然后将正则表达式转换为霍夫曼代码,(至少在理论上)可行吗?这可能比先解压缩数据然后运行regexp更有效吗?

(注意:我知道这不是那么简单:我们还必须处理ZIP编码文件布局,块结构,反向引用的其他方面,但有人认为这可能相当轻巧。)

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