2011-08-30 153 views
2

特定字符串(也不行),我有一個文本文件中兩行的文本文件:刪除從文本文件蟒蛇

<BLAHBLAH>483920349<FOOFOO> 
<BLAHBLAH>4493<FOOFOO> 

那是在文本文件中的唯一的事。使用python,我想寫入文本文件,這樣我就可以從每行刪除BLAHBLAH和FOOFOO。這似乎是一個簡單的任務,但刷新我的文件操作後,我似乎找不到辦法做到這一點。 非常感謝幫助:)

謝謝!

+4

該文件是否真的** XML?或HTML?還是XHTML?如果是這樣,請**更新**的問題是更具體的文件**真**看起來像什麼。如果文件符合任何標準,則有簡單的方法可以做到這一點。 –

+1

你能告訴我們至少你有什麼試過嗎? – utdemir

回答

4

如果它是一個文本文件,就像你說的,而不是HTML/XML /別的東西,只是用replace

for line in infile.readlines(): 
    cleaned_line = line.replace("BLAHBLAH","") 
    cleaned_line = cleaned_line.replace("FOOFOO","") 

cleaned_line到一個輸出文件。

3
f = open(path_to_file, "w+") 

f.write(f.read().replace("<BLAHBLAH>","").replace("<FOOFOO>","")) 
f.close() 

更新(保存到另一個文件):

f = open(path_to_input_file, "r") 
output = open(path_to_output_file, "w") 

output.write(f.read().replace("<BLAHBLAH>","").replace("<FOOFOO>","")) 
f.close() 
output.close() 
+1

這樣,您可以將更正的數據追加到已經存在的文件中。 – glglgl

+1

除了glglgl之外,我通常認爲覆蓋輸入文件非常糟糕,除非它是絕對必要的。如果程序中存在某個錯誤會怎麼樣? – jozzas

1

考慮正則表達式模塊重。

result_text = re.sub('<(.|\n)*?>',replacement_text,source_text) 

<>琴絃被識別。它是非貪婪的,即它將接受最小可能長度的子串。例如,如果你有「< 1>文本< 2>詳細文本」,貪婪的解析器將採取「< 1>文本< 2>」,但非貪婪解析器發生在「< 1> 「」< 2>「

當然,您的replacement_text是'',source_text是文件中的每一行。