是否有一个Python模块的正则表达式在zip文件中匹配

问题描述:

我有超过一百万个文本文件压缩成40个zip文件。我也有一个约500个手机型号名单。我想找出文本文件中提到的特定模型的次数。是否有一个Python模块的正则表达式在zip文件中匹配

是否有任何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包使这非常容易,因为您可以单独解压缩存档中的每个文件。

Python zipfile module

是不是(至少在理论上)可能在ZIP的Huffman编码读取,然后将正则表达式转换成霍夫曼码?可能比第一次解压缩数据更有效,然后运行正则表达式? (注:我知道它不会那么简单:你还必须处理ZIP编码—文件格式,块结构,反向引用—的其他方面,但有人认为这可能是公平的轻量级。)

编辑:另请注意,它可能是更合理的只使用zipfile解决方案。

+0

绝对不是。 Zip文件不是用霍夫曼编码存储的,而是使用基于字典的编码。符号的编码取决于其他符号的编码及其在源中的频率。所以这种技术没有机会工作,无论如何。 – 2009-01-27 14:06:30