使用Python在文本文件中查找和替换

Ali*_*uff 18 python text replace file

我有一个大约400,000行的文本文件.我需要将此文本文件导入到一个程序中,该程序只接受用空格或制表符分隔的文本文件,但此文本文件用分号分隔.程序中没有选项我从(Arcmap)导出文本文件以更改删除,并且在文本文件中执行查找和替换本身将需要2天.

我已经搜索了一个脚本来执行此操作,但它们似乎都用空格替换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
Run Code Online (Sandbox Code Playgroud)

我需要它看起来像这样:

1 -56.000000 200900.250122 514999.750122
2 -56.000000 200900.750122 514999.750122
Run Code Online (Sandbox Code Playgroud)

eum*_*iro 32

这个怎么样:

sed -i 's/;/ /g' yourBigFile.txt
Run Code Online (Sandbox Code Playgroud)

这不是Python解决方案.你必须在shell中启动它.但是如果你使用记事本,我想你是在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()
Run Code Online (Sandbox Code Playgroud)


gho*_*g74 20

使用Python,您可以使用fileinput.

import fileinput
for line in fileinput.FileInput("file",inplace=1):
    line = line.replace(";"," ")
    print line,
Run Code Online (Sandbox Code Playgroud)

这将取代你所有的";" 到位空间.

  • 这为我在 Windows 中的每一行之后添加了一个额外的换行符。 (2认同)