2013-01-12 62 views
0
for line in open(fname, 'r'): 
    if re.search('#', line): 
     #print(line) 
     pass 
    elif re.search('# segment: retract', line): 
     print(line) 
     print('break here') 
     break 
    else: 
     outfile.write(line) 

ELIF語句,無法正常工作,任何人可以幫助我與匹配註冊表達

一個正則表達式「#段:收回」

代碼甚至不進入的elif語句。

由於

回答

3

的第一個表達式if子句將總是與用於包含「#」行。因此,您在elif子句中的更具體的條件永遠不會匹配,因爲if子句中更通用的條件總是被執行。因此,您首先會測試更具體的條件,並將更通用的條件移入elif部分。

for line in open(fname, 'r'): 

    if re.search('# segment: retract', line): 
     print(line) 
     print('break here') 
     break 
    elif re.search('#', line): 
     #print(line) 
     pass 
    else: 
     outfile.write(line) 
+1

通過閱讀我的答案? –

+1

根本不需要正則表達式。 'if'#segment:retract'in line:'就夠了。 –

2

我不認爲這是正則表達式是概率。狀況需要扭轉像

if re.search('# segment: retract', line): 
    print(line) 
    print('break here') 
    break 
elif re.search('#', line): 
    #print(line) 
    pass 
else: 
    outfile.write(line) 

的問題是第一,如果條件醒目開始#所有線路和其他從未發生過。