7

100万を超えるテキストファイルを40のzipファイルに圧縮しています。私はまた電話の約500のモデル名のリストを持っています。特定のモデルがテキストファイルで言及された回数を知りたいです。

解凍せずにファイルの正規表現一致を実行できるPythonモジュールはありますか?解凍せずにこの問題を解決する簡単な方法はありますか?

4

4 に答える 4

10

あなたが望むことを自動的に行うものは何もありません。

ただし、これを簡単に実行できるPythonzipfileモジュールがあります。ファイルの行を繰り返す方法は次のとおりです。

#!/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
于 2008-08-18T08:19:06.390 に答える
0

zipファイルをループして、zipfileモジュールを使用して個々のファイルを読み取り、それらに対して正規表現を実行して、すべてのファイルを一度に解凍する必要がなくなります。

少なくとも意味のあることではありませんが、zip形式のデータに対して正規表現を実行することはできないと確信しています。

于 2008-08-18T08:06:30.707 に答える
0

zipファイルの内容にアクセスするには、解凍する必要がありますが、zipfileパッケージを使用すると、アーカイブ内の各ファイルを個別に解凍できるため、これはかなり簡単になります。

Pythonzipfileモジュール

于 2008-08-18T08:10:57.577 に答える
0

(少なくとも理論的には)ZIPのハフマンコーディングを読み取ってから、正規表現をハフマンコードに変換することは可能ではありませんか?これは、最初にデータを解凍してから正規表現を実行するよりも効率的でしょうか?

(注:それほど単純ではないことはわかっています。ZIPコーディングの他の側面(ファイルレイアウト、ブロック構造、後方参照)も処理する必要がありますが、これはかなり軽量であると考えられます。)

zipfile編集:また、ソリューションを使用する方がおそらくはるかに賢明であることに注意してください。

于 2008-09-03T14:42:10.323 に答える