我有超過一百萬個文本文件壓縮成40個zip文件。我也有一個約500個手機型號名單。我想找出文本文件中提到的特定模型的次數。是否有一個Python模塊的正則表達式在zip文件中匹配
是否有任何python模塊可以在不解壓的情況下對文件進行正則表達式匹配。有沒有簡單的方法解決這個問題,而不解壓縮?
我有超過一百萬個文本文件壓縮成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包使這非常容易,因爲您可以單獨解壓縮存檔中的每個文件。
是不是(至少在理論上)可能在ZIP的Huffman編碼讀取,然後將正則表達式轉換成霍夫曼碼?可能比第一次解壓縮數據更有效,然後運行正則表達式? (注:我知道它不會那麼簡單:你還必須處理ZIP編碼—文件格式,塊結構,反向引用—的其他方面,但有人認爲這可能是公平的輕量級。)
編輯:另請注意,它可能是更合理的只使用zipfile
解決方案。
絕對不是。 Zip文件不是用霍夫曼編碼存儲的,而是使用基於字典的編碼。符號的編碼取決於其他符號的編碼及其在源中的頻率。所以這種技術沒有機會工作,無論如何。 – 2009-01-27 14:06:30