zipファイル内の正規表現と一致するPythonモジュールはありますか
-
08-06-2019 - |
質問
100 万を超えるテキスト ファイルを 40 の zip ファイルに圧縮しています。携帯電話のモデル名のリストも約 500 個あります。特定のモデルがテキスト ファイル内で言及された回数を調べたいと考えています。
ファイルを解凍せずにファイルの正規表現一致を実行できる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 のハフマン コードを読み取り、正規表現をハフマン コードに変換することは (少なくとも理論的には) 可能ではないでしょうか?これは、最初にデータを解凍してから正規表現を実行するよりも効率的でしょうか?
(注記:それほど単純ではないことはわかっています。また、ZIP コーディングの他の側面 (ファイル レイアウト、ブロック構造、後方参照) にも対処する必要がありますが、これはかなり軽量になると想像されます)。
編集:また、単に使用する方がおそらくはるかに賢明であることにも注意してください。 zipfile
解決。