2008-08-18 53 views
4

我有超過一百萬個文本文件壓縮成40個zip文件。我也有一個約500個手機型號名單。我想找出文本文件中提到的特定模型的次數。是否有一個Python模塊的正則表達式在zip文件中匹配

是否有任何python模塊可以在不解壓的情況下對文件進行正則表達式匹配。有沒有簡單的方法解決這個問題,而不解壓縮?

回答

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 
0

您可以循環瀏覽zip文件,使用zipfile模塊讀取單個文件並對這些文件運行正則表達式,從而無需一次解壓縮所有文件。

我相當肯定你不能對壓縮數據運行正則表達式,至少沒有意義。

0

要訪問zip文件的內容,您必須將其解壓縮,儘管zipfile包使這非常容易,因爲您可以單獨解壓縮存檔中的每個文件。

Python zipfile module

0

是不是(至少在理論上)可能在ZIP的Huffman編碼讀取,然後將正則表達式轉換成霍夫曼碼?可能比第一次解壓縮數據更有效,然後運行正則表達式? (注:我知道它不會那麼簡單:你還必須處理ZIP編碼—文件格式,塊結構,反向引用—的其他方面,但有人認爲這可能是公平的輕量級。)

編輯:另請注意,它可能是更合理的只使用zipfile解決方案。

+0

絕對不是。 Zip文件不是用霍夫曼編碼存儲的,而是使用基於字典的編碼。符號的編碼取決於其他符號的編碼及其在源中的頻率。所以這種技術沒有機會工作,無論如何。 – 2009-01-27 14:06:30