【发布时间】:2011-05-10 09:14:43
【问题描述】:
我正在尝试删除包含特定字符串的特定行。
我有一个名为 numbers.txt 的文件,其内容如下:
彼得
汤姆
汤姆1
颜
我要删除的是文件中的那个tom,所以我做了这个函数:
def deleteLine():
fn = 'numbers.txt'
f = open(fn)
output = []
for line in f:
if not "tom" in line:
output.append(line)
f.close()
f = open(fn, 'w')
f.writelines(output)
f.close()
输出是:
彼得
颜
如您所见,问题在于函数删除tom和tom1,但我不想删除tom1。我只想删除 tom。这是我想要的输出:
彼得
汤姆1
颜
有什么想法可以改变函数以使其正确吗?
【问题讨论】:
-
@Jakob Bowyer:因为
line带有换行符,所以您至少需要line == 'tom\n'或line.rstrip() == 'tom'。 -
求求求求求求。这个问题已经被问了十几次了。 stackoverflow.com/search?q=%5Bpython%5D+delete+line+from+file。或者。如果您的问题是关于匹配文件中的一行,请将标题更改为“字符串匹配问题”。或者“为什么
not "tom" in line不起作用?”或者更专注、更准确的东西。