2

巨大なテキスト ファイル (1 GB) を開いて、テキスト マイニングを実行しようとしています。
私はいくつかの正規表現検索を喜んで実行します。
read() 関数を使用すると、次のエラーが発生します。

File "C:\Python33\lib\encodings\latin_1.py", line 26, in decode
return codecs.latin_1_decode(input,self.errors)[0]
MemoryError

私のコードは次のとおりです。

dataFile = open('data/AllData_2000001_3000000.txt', 'r', encoding="latin-1")
print(dataFile.read())

正規表現検索を実行するために、テキストを開く最良の方法は何ですか?
ありがとう!

4

2 に答える 2

5

print(dataFile.read())ファイル全体をメモリにロードしているため、エラーが発生しています。それを行うより良い方法は、行ごとです。

dataFile = open('data/AllData_2000001_3000000.txt', 'r', encoding="latin-1")
for line in dataFile:
    #perform regex searching in each line here
    print(line)

お役に立てれば!

于 2013-08-11T21:41:43.843 に答える
0

何をしたいかによって異なります:

1GB 全体をまとめて正規表現検索を本当に実行したい場合、多くのオプションはありません。現在 32 ビット バージョンを使用している場合は、64 ビット Python への切り替えがその 1 つかもしれません。

テキスト ファイルは行単位で整理されていますか? その場合、1 行を読み取って処理し、次の行に進むことができます。もちろん、これは分離できるあらゆる種類の「チャンク」で機能します。

于 2013-08-11T21:43:06.127 に答える