在Python中从文件中删除一行

Bor*_*rja 10 python string file line

我正在尝试删除包含特定字符串的特定行.

我有一个名为numbers.txt的文件,其中包含以下内容:

peter
tom
tom1
yan

我要删除的是文件中的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()
Run Code Online (Sandbox Code Playgroud)

输出是:

彼得

正如你所看到的,问题是函数删除tomtom1,但我不想删除tom1.我想删除汤姆.这是我想要的输出:

peter
tom1
yan

有任何改变功能的想法是为了正确吗?

Mat*_*tic 12

换行:

    if not "tom" in line:
Run Code Online (Sandbox Code Playgroud)

至:

    if "tom" != line.strip():
Run Code Online (Sandbox Code Playgroud)

  • Mac上的Python 2.5.4在迭代fileobj时不会删除新行字符,因此如果要与字符串进行比较,则需要将其删除.此外,我看到很多错误后,一个空白以某种方式设法偷偷在行尾,代码没有处理它. (2认同)
  • @Jakob Bowyer:为了完整,那不是真的.行也不会在linux或windows中被删除.无论平台如何,从python中的文件对象读取的任何行都带有换行符** (2认同)