Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.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_Python 3.x_Tkinter_Replace - Fatal编程技术网

如何读取文本文件中的行并替换Python中的整行?

如何读取文本文件中的行并替换Python中的整行?,python,python-3.x,tkinter,replace,Python,Python 3.x,Tkinter,Replace,如果有一行以“truck_placement”开头,我想替换文本文档中的整行 当包含“truck_placement”时,是否可以删除整行内容,然后写入新文本 我试过了,但它只插入了新的文本,并没有替换整行 这就是当前的代码: cordget = coordinatesentry.get() fin = open(save_file,"r") filedata = fin.read() fin.close newdata = filedata

如果有一行以“truck_placement”开头,我想替换文本文档中的整行

当包含“truck_placement”时,是否可以删除整行内容,然后写入新文本

我试过了,但它只插入了新的文本,并没有替换整行

这就是当前的代码:

cordget = coordinatesentry.get()
    fin = open(save_file,"r")
    filedata = fin.read()
    fin.close

    newdata = filedata.replace("truck_placement: " , "truck_placement: " + cordget)

    fin = open(save_file, "w")
    fin.write(newdata)
    fin.close

最好是将所有不带“truck_placement”的行附加到新文件中。这可以通过以下代码完成:

original = open("truck.txt","r")
new = open("new_truck.txt","a")

for line in original:
    if "truck_placement" not in line:
        new.write(line)

original.close()
new.close()

您可以将整个文件读入一个字符串,然后使用正则表达式替换该行:

重新导入
cordget=“(值,一)(值,二)”
保存文件=“sample.txt”
打开(将_文件“r”另存为f):
data=f.read()
#捕捉从“truck\u placement:”到换行符('\n')的行
#并将其替换为第二个参数,其中“\1”是捕获的组
#“卡车位置:”是。
data=re.sub(r'(卡车位置:).*\n',r'\1%s\n'%cordget,data)
打开时(将_文件“w”另存为f):
f、 写入线(数据)
或者,您可以将文件读取为所有行的列表,并覆盖特定行:

cordget=“(值,一)(值,二)”
保存文件=“sample.txt”
打开(将_文件“r”另存为f):
数据=f.读线()
对于索引,枚举(数据)中的行:
如果行中有“卡车放置”:
数据[索引]=f“卡车位置:{cordget}\n”
打开时(将_文件“w”另存为f):
f、 写入线(数据)

听起来有些代码并不能完全满足您的需要。您应该发布一个。可能尝试在您的文件中进行迭代,并将不等于“truck_placement”的行写入一个单独的文件或您的文件中,因为它只会覆盖它。你想让我告诉你怎么做吗?包括一些代码,这样我们就可以知道在哪里更正了?我已经把代码包括在问题中了。你能提供预期的输出吗?特别是你要覆盖的那行?因为你的代码运行得很好。恰好您将
truck\u placement:
放回原位,并仅将
cordget
添加到以下行
newdata=filedata。替换(“truck\u placement:”,“truck\u placement:“+cordget”)