我们说我的list.txt包含:
Apple
Orange
Banana
Watermelon
我想删除包含字符串" Orange"的文件中的行。我希望文件现在看起来像这样:
Apple
Banana
Watermelon
我不希望它看起来像这样:
Apple
Banana
Watermelon
我不想将其保存到新文件中,我希望它是同一个文件。 (我发现的所有例子都是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)