2011-01-20 14 views
18

私は約40万行のテキストファイルを持っています。このテキストファイルをスペースやタブで区切られたテキストファイルのみを受け入れるプログラムにインポートする必要がありますが、このテキストファイルはセミコロンで区切られています。プログラムにオプションはありません。テキストファイルを(Arcmap)からエクスポートして区切りを変更し、テキストファイル自体を検索して置換することは、文字通り2日かかるでしょう。Pythonを使用してテキストファイル内を検索して置き換えます

これを行うためにスクリプトを検索しましたが、空白のテキストファイルを残して、セミコロンを個別に置き換えるのではなく、wordファイルのLINE全体をスペースで置き換えるように見えます。ここで

は私のテキストファイルのサンプルです:

"OID_";"POINTID";"GRID_CODE";"POINT_X";"POINT_Y" 
;1;-56.000000;200900.250122;514999.750122 
;2;-56.000000;200900.750122;514999.750122 
;3;-56.000000;200901.250122;514999.750122 
;4;-57.000000;200901.750122;514999.750122 
;5;-57.000000;200902.250122;514999.750122 
;6;-57.000000;200902.750122;514999.750122 
;7;-57.000000;200903.250122;514999.750122 
;8;-57.000000;200903.750122;514999.750122 
;9;-57.000000;200904.250122;514999.750122 
;10;-57.000000;200904.750122;514999.750122 

私はそれがこのような何かを見てする必要があります:

これについてどのように
1 -56.000000 200900.250122 514999.750122 
2 -56.000000 200900.750122 514999.750122 
+0

アリス、あなたの質問を編集して、(1)ファイルの最初の数行(2)を修正した後の行の様子を表示してください。私はあなたを助けることができるとはかなり確信していますが、あなたがする必要があることを正確に知る必要があります。また、Python 2.xまたは3.X? –

+0

メモ帳で "find replace all"機能を使用すると、コンピュータがcompostする原因になるので、私はPythonソリューションが必要です! –

+0

ジョン、私は今それを編集します。しかし、ファイルを開くには約10分かかります!! –

答えて

30

sed -i 's/;/ /g' yourBigFile.txt 

これではありませんPythonソリューション。あなたはシェルでこれを始める必要があります。しかし、あなたがメモ帳を使用する場合、私はあなたがWindows上にいると思います。ここではPythonのソリューション:

f1 = open('yourBigFile.txt', 'r') 
f2 = open('yourBigFile.txt.tmp', 'w') 
for line in f1: 
    f2.write(line.replace(';', ' ')) 
f1.close() 
f2.close() 
+0

これをそのままPythonにコピーしてください。私はそれのインフロントは何も記述する必要がありますあなたは、私はエラーを取得する –

+0

@Aliceが、私はPythonのソリューションを追加した(私の完全な無駄のために申し訳ありませんが!):メッセージ\tファイル名\tライン\tポジション\t トレースバック\t \t \t \t \t C:\ DocumentsとSettings \ DuffA \ Mijn documenten \ダウンロード\ search_replace.py \t はAttributeError: 'ファイル' オブジェクトが – eumiro

+0

ため –

18

をPythonで使用すると、fileinputを使用できます。

import fileinput 
for line in fileinput.FileInput("file",inplace=1): 
    line = line.replace(";"," ") 
    print line, 

これは、すべての ";"を置き換えます。スペースを空けて配置します。何らかの理由で、処理中に失敗したファイルは常に閉じてしまいますように

+1

Windowsのすべての行の後に余分な改行があります。 – briantyler

+0

@ TheMouthofaCow - 私はその問題を修正するための編集を提案しました。 –

+1

ファイルを閉じる必要があります。 – Mateu

4

のPython 3.2は、コンテキストマネージャとしてこれを使用する機能を追加しました:

import fileinput 
def main(): 
    with fileinput.input(inplace=True) as f: 
     for line in f: 
      line = line.replace(";", " ") 
      print(line, end='') 

inspiration

供給することにより、それを使用しますあなたが処理したいテキストファイルを持っています。

+0

Tshepangこの行は何をするのですか? print(line、end = '') –

+0

"通常の' \ n'文字ではなく、行末に空文字列を挿入します。 – Tshepang

関連する問題