2014-08-28 87 views
-2

我有一個文件,我需要刪除正則表達式匹配部分,並將剩餘的行寫入文件。刪除文件的正則表達式匹配部分

正則表達式匹配代碼來刪除文件:

import re 
with open("in1.txt") as f: 
    lines = f.read() 
    m = re.findall(r'(?s)(my _car_\s*.*?)my', lines) 

輸入文件:

my _car_(10) 
    skoda 
    audi 

my home 
good 

my _car_(11) 
benz 

預期輸出:

my home 
good 

請幫我解決這個問題,答案將不勝感激!

+0

可能重複http://stackoverflow.com/questions/25553575/parse- using-regex-and-print-the-line) – Dalorzo 2014-08-28 17:59:02

+0

澄清:您試圖刪除所有以符合正則表達式的行之後的空格開頭的行? – 2014-08-28 18:01:45

+0

不,我需要盲目刪除匹配正則表達式的行 – 2014-08-28 18:03:44

回答

0
import re 
with open("in1.txt") as f: 
    lines = f.read() 
    m = re.sub(r'(?s)my _car_.*?(?=my|$)', '', lines) 
    m = re.sub(r'\n+', '\n', m) 
    print m, 
的[解析使用正則表達式和打印線(
+0

其未被刪除,請幫忙! – 2014-08-28 18:36:52

+1

您需要打開文件並將'm'的內容寫入文件。 – 2014-08-28 18:41:14

1

假設你能夠行寫出來,this regex replacement可能是你在找什麼

lines = re.sub(r'(?s)(my _car_\s*.*?)(my|$)', r'\2', lines).strip() 

聽起來好像你不知道怎麼寫出來的文件。轉儲文本到一個名爲文件out.txt

with open('out.txt', 'w') as f: 
    f.write(lines) 
+0

我得到相同的'文件它沒有刪除! – 2014-08-28 18:35:15