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

时间:2008-08-18 07:41:09

标签: python regex zip text-processing

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

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

4 个答案:

答案 0 :(得分:9)

没有什么会自动做你想做的事。

然而,有一个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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

Python zipfile module

答案 3 :(得分:0)

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

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

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