[英]Replace line in text file using python
这是我的程序:
filetest = open ("testingfile.txt", "r+")
ID = input ("Enter ID: ")
list = ['Hello', 'Testing', 'File', 543210]
for line in filetest:
line = line.rstrip ()
if not ID in line:
continue
else:
templine = '\t'.join(map(str, list))
filetest.write (line.replace(line, templine))
filetest.close ()
我正在尝试用 templine 替换包含在 filetest 中输入的 ID 的整行(templine 是一个用制表符连接到字符串中的列表),我认为我的代码的问题特别是这部分filetest.write (line.replace(line, templine))
,因为当我运行程序时,文件中包含 ID 的行不会被替换,而是将templine
添加到行尾。
例如,如果使用输入的 ID 在 filetest 中找到的行是"Goodbye\tpython,"
现在它变成了"Goodbye\tpythonHello\tTesting\tFile\t543210"
,这不是我想要的。 如何确保"Goodbye\tpython"
行替换为templine
"Hello\tTesting\tFile\t543210"
,而不是附加?
当您从文件中读取时,文件指针也会移动,这可能会导致问题。 我要做的是首先读取文件并准备好你想要的“新文件”,然后将其写入文件中,如下面的代码所示:
filetest = open ("testingfile.txt", "r")
lines = filetest.readlines()
filetest.close()
ID = input ("Enter ID: ")
list = ['Hello', 'Testing', 'File', 543210]
for i in range(len(lines)):
lines[i] = lines[i].rstrip()
if ID not in lines[i]:
continue
else:
templine = '\t'.join(map(str, list))
lines[i] = templine
with open("testingfile.txt", "w") as filetest:
for line in lines:
filetest.write(line + "\n")
我没有更改代码的逻辑,但请注意,例如,如果您的文件有一个数字为“56”的行和一个数字为“5”的行,并且您输入了 ID“5”,那么该代码将替换这两行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.