使用python替换文本文件中的行

2024-07-05 14:10:42 发布

您现在位置: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{}替换,而不是追加


Tags: intxtidinputlineopen节目replace
1条回答
网友
1楼 · 发布于 2024-07-05 14:10:42

在读取文件时,文件指针也会移动,这可能会导致问题。我要做的是首先读取文件并准备您想要的“新文件”,然后将其写入文件,如下面的代码所示:

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”,那么代码将替换这两行

相关问题 更多 >