2012-09-18 59 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"