使用Python在文本文件中查找和替换
我有一个大约40万行的文本文件。我需要将此文本文件导入一个程序,该程序只接受用空格或制表符分隔的文本文件,但此文本文件用分号分隔。在我正在从(Arcmap)导出文本文件的程序中没有选项来更改删除,在文本文件本身中进行查找和替换实际上需要2天 我已经搜索了一个脚本来实现这一点,但它们似乎都用空格替换了word文件的整行,而不是单独替换每个分号,给我留下了一个空文本文件 以下是我的文本文件示例:使用Python在文本文件中查找和替换,python,file,text,replace,Python,File,Text,Replace,我有一个大约40万行的文本文件。我需要将此文本文件导入一个程序,该程序只接受用空格或制表符分隔的文本文件,但此文本文件用分号分隔。在我正在从(Arcmap)导出文本文件的程序中没有选项来更改删除,在文本文件本身中进行查找和替换实际上需要2天 我已经搜索了一个脚本来实现这一点,但它们似乎都用空格替换了word文件的整行,而不是单独替换每个分号,给我留下了一个空文本文件 以下是我的文本文件示例: "OID_";"POINTID";"GRID_CODE";"POINT_X";"POINT_Y" ;1;
"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
这个怎么样:
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()
使用Python,您可以使用
这将替换所有“;”到空间的位置 Python 3.2增加了将其用作上下文管理器的功能,因此在处理过程中由于某种原因失败的文件将始终关闭:
import fileinput
def main():
with fileinput.input(inplace=True) as f:
for line in f:
line = line.replace(";", " ")
print(line, end='')
()
通过提供要处理的文本文件来使用它。Alice,请编辑您的问题以显示(1)文件的前几行(2)修复后这些行的外观。我很确定我们可以帮助你,但我们需要确切地知道你需要做什么。另外,Python2.x或3.x?我需要一个Python解决方案,因为在记事本中使用“find replace all”函数会导致我的计算机计算!约翰,我现在就编辑。。但是打开文件大约需要10分钟!!爱丽丝,(1)请回答:Python 2.X还是3.X?(2) 请以文件重命名问题开始另一个问题(并从此问题中删除它)。Alice,您确定每行有两个逻辑记录吗???领先的
有什么意义代码>??实际上有任何换行符吗???直接复制到python中就行了?我必须在它前面写些什么吗(对不起,我完全没用了!)@Alice,我为您添加了一个Python解决方案。我得到了错误:消息文件名行位置回溯C:\Documents and Settings\DuffA\Mijn documenten\Downloads\search\u replace.py 6 AttributeError:“File”对象没有属性“replace”,这更好:在Windows中为我的每一行添加一个额外的换行符。@TheMouthofaCow-我已经建议编辑以修复该问题。这解决了额外的行问题:Tshepang这行做什么?print(line,end='')“在行尾插入一个空字符串,而不是通常的\n
字符”
import fileinput
def main():
with fileinput.input(inplace=True) as f:
for line in f:
line = line.replace(";", " ")
print(line, end='')