2012-09-18 116 views
0

我有一個Python沒有正確循環遍歷文件中的行的問題。在第一個塊中,它正確地循環顯示各行,並在文件中顯示每行。但是,在第二個塊中,它只執行文件的第一行,然後停止。塊2的輸出應該是相同的,但不是。這讓我瘋狂。Python沒有正確循環

BLOCK-1 
f = open(filename, 'r') 
for line in f: 
    print line, 
f.close() 

BLOCK-2 
f = open(filename, 'r') 
for line in f: 
    match = re.search(r'^(.*)$', line) 
    if match: 
     print match.group(1) 
    else: 
     return "DOES NOT MATCH" 
+2

'回報'意味着你在函數內部使用了代碼塊? –

+2

'return'會立即退出函數,只要匹配失敗,任何行... – nneonneo

+0

@nneonneo,這個重新匹配任何一行 –

回答

2

您的block-2代碼有一個return語句。任何不符合你的正則表達式的行將打破循環。

+0

謝謝...我完全忽略了這一點。 – TCW

1

您確定並不意味着print "DOES NOT MATCH"

1

看來,regex不匹配的第二行以某種方式

它可以幫助打印出不匹配的東西,這樣你就可以工作了,爲什麼不

f = open(filename, 'r') 
for line in f: 
    match = re.search(r'^(.*)$', line) 
    if match: 
     print match.group(1) 
    else: 
     print repr(line), "DOES NOT MATCH" # <--- Just add this line 
     return "DOES NOT MATCH"