2012-09-18 5 views
0

파이썬이 파일의 줄을 제대로 루핑하지 못하는 문제가 있습니다. 첫 번째 블록에서는 라인을 적절하게 반복하고 각 라인을 파일에 표시합니다. 그러나 두 번째 블록에서는 파일의 첫 번째 줄만 수행 한 다음 중지합니다. 블록 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

블록 2 코드에는 return 문이 있습니다. 귀하의 정규식과 일치하지 않을 모든 라인은 루프를 깰 것이다.

+0

고마워요. 나는 그것을 간과했습니다. – TCW

1

print "DOES NOT MATCH"을 의미하지 않습니까?

1

IT는 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" 
관련 문제