2014-11-25 47 views
0

比方說,我已經LIST.TXT包含:如何使用特定字符串刪除文件中的一行?

Apple 
Orange 
Banana 
Watermelon 

,我想刪除行包含字符串「橙色」的文件中。我想要的文件到現在這個樣子:

Apple 
Banana 
Watermelon 

希望它看起來是這樣的:

Apple 

Banana 
Watermelon 

我不想將其保存到一個新的文件,我想它是同一個文件。 (我發現的所有例子都是2個不同的文件)

任何方式來做到這一點?

+0

你有沒有試圖修改這些示例以你的情況?你可以覆蓋現有的文件,刪除它並重命名另一個,... – jonrsharpe 2014-11-25 12:17:54

+0

那麼這就是我要做的,如果沒有其他更簡單的解決方案。我只是覺得有一個更簡單的方法可以做到這一點,我沒有想到/發現。 – hacktheplanet 2014-11-25 12:20:07

回答

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

如果你做了更換,當你閱讀的文件,你可以將數據寫回文件:

filename = "data.txt" 

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

with open (filename, "w") as myfile: 
    myfile.write(data) 
相關問題