4

次の問題があります: 500MB 近くのファイルがあります。そのテキストはすべて 1 行です。テキストは、ROW_DEL と呼ばれる仮想行の終わりで区切られ、次のようなテキスト内にあります。

this is a line ROW_DEL and this is a line

次のようにする必要があります。このファイルを行に分割して、次のようなファイルを取得します。

this is a line
and this is a line

問題は、Windows のテキスト エディタで開いても、ファイルが大きすぎて壊れてしまうことです。

C#、Java、または Python で述べたように、このファイルを分割することは可能ですか? 私のCPUを過度に殺さないための最良の解決策は何でしょう。

4

3 に答える 3

1

実際、500MB のテキストはそれほど大きくはありません。Windows を使用しているため、おそらく sed は利用できませんが、少なくとも Python で単純なソリューションを試してみてください。うまくいくと思います。

import os
with open('infile.txt') as f_in, open('outfile.txt', 'w') as f_out:
  f_out.write(f_in.read().replace('ROW_DEL ', os.linesep))
于 2013-05-16T09:39:47.150 に答える
1

このファイルをチャンクで読み取ります。たとえばStreamReader.ReadBlock、C# で使用します。そこに読み取る最大文字数を設定できます。

読み取ったチャンクごとに、新しいファイルに置き換えROW_DELて追加できます。\r\n

読んだ文字数だけ現在のインデックスを増やすことを忘れないでください。

于 2013-05-16T09:28:40.383 に答える