Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python在文本文件中查找和替换_Python_File_Text_Replace - Fatal编程技术网

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

使用Python在文本文件中查找和替换,python,file,text,replace,Python,File,Text,Replace,我有一个大约40万行的文本文件。我需要将此文本文件导入一个程序,该程序只接受用空格或制表符分隔的文本文件,但此文本文件用分号分隔。在我正在从(Arcmap)导出文本文件的程序中没有选项来更改删除,在文本文件本身中进行查找和替换实际上需要2天 我已经搜索了一个脚本来实现这一点,但它们似乎都用空格替换了word文件的整行,而不是单独替换每个分号,给我留下了一个空文本文件 以下是我的文本文件示例: "OID_";"POINTID";"GRID_CODE";"POINT_X";"POINT_Y" ;1;

我有一个大约40万行的文本文件。我需要将此文本文件导入一个程序,该程序只接受用空格或制表符分隔的文本文件,但此文本文件用分号分隔。在我正在从(Arcmap)导出文本文件的程序中没有选项来更改删除,在文本文件本身中进行查找和替换实际上需要2天

我已经搜索了一个脚本来实现这一点,但它们似乎都用空格替换了word文件的整行,而不是单独替换每个分号,给我留下了一个空文本文件

以下是我的文本文件示例:

"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='')