如何删除具有特定字符串的文件中的行?

时间:2014-11-25 12:15:54

标签: python python-2.7

我们说我的list.txt包含:

Apple
Orange
Banana
Watermelon

我想删除包含字符串" Orange"的文件中的行。我希望文件现在看起来像这样:

Apple
Banana
Watermelon

希望它看起来像这样:

Apple

Banana
Watermelon

我不想将其保存到新文件中,我希望它是同一个文件。 (我发现的所有例子都是2个不同的文件)

有什么办法吗?

2 个答案:

答案 0 :(得分:1)

通过re.sub

>>> s = """Apple
Orange
Banana
Watermelon"""
>>> print(re.sub(r'.*?Orange.*\n', r'', s))
Apple
Banana
Watermelon

如果该行在文件的中间或第一个或最后一个包含橙色。

>>> s = """Apple
Orange
Banana
Watermelon
Orange"""
>>> print(re.sub(r'(?s)(?:[^\n]*?Orange[^\n]*\n|\n[^\n]*?Orange[^\n]*$)', r'', s))
Apple
Banana
Watermelon

使用该文件。

import re
with open('file.txt', 'r') as r:
    file = r.read()
    data = re.sub(r'(?s)(?:[^\n]*?Orange[^\n]*\n|\n[^\n]*?Orange[^\n]*$)', r'', file)

with open('file.txt', 'w') as f:
    f.write(data)

答案 1 :(得分:1)

如果在读取文件时进行替换,则可以将数据写回文件:

filename = "data.txt"

with open (filename, "r") as myfile:
    data=myfile.read().replace('Orange\n', '')

with open (filename, "w") as myfile:
    myfile.write(data)