(Python) 반복문에서의 startswith 질문

조회수 639회
name = input('Enter file name: ')
if len(name) < 1 : name = 'mbox-short.txt'
handle = open(name)

counts = dict()

for line in handle :
    if 'From' in line :
        print(line) 

특정 워드를 찾는 문제에서 평소같이 문장을 사용해 찾았습니다. 그렇게 나온 결과가

From stephen.marquard@uct.ac.za Sat Jan  5 09:14:16 2008
From: stephen.marquard@uct.ac.za
From louis@media.berkeley.edu Fri Jan  4 18:10:48 2008
From: louis@media.berkeley.edu
From zqian@umich.edu Fri Jan  4 16:10:39 2008
From: zqian@umich.edu
...

위와 같은식으로 메일주소만 한 번 더 반복되어 출력되더라구요. 이 때 당시만 하더라도 전 텍스트 내에 이렇게 저장되어 있는 줄 알았습니다. 도통 풀리지 않아 코드를 검색하던 도중 같은 코드에서

startswith('From')

으로만 변경하니

From stephen.marquard@uct.ac.za Sat Jan  5 09:14:16 2008
From louis@media.berkeley.edu Fri Jan  4 18:10:48 2008
From zqian@umich.edu Fri Jan  4 16:10:39 2008
From rjlowe@iupui.edu Fri Jan  4 15:46:24 2008
From zqian@umich.edu Fri Jan  4 15:03:18 2008
From rjlowe@iupui.edu Fri Jan  4 14:50:18 2008

위와 같이 메일 주소만 있었던 라인이 사라져있었습니다. 다른 값으로 풀어보려고 하니 헛짓거리 한 셈인데요. 함수를 사용하고 안하고에서 왜 출력결과가 이렇게 달라지는지 궁금합니다. 이유가 무엇인가요? 제가 사용한 방식이 왜 잘못된 거였나요? 조언 부탁드립니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 질문자의 현상이 이해가 되지 않습니다. 파일안의 문자열을 알아야 원인 파악을 할 수 있습니다.

    'From' in line 은 From 만 존재하면 True이고 startswith 는 From 으로 시작하는 문자열만 True 입니다.

    From stephen.marquard@uct.ac.za Sat Jan 5 09:14:16 2008 From: stephen.marquard@uct.ac.za

    두 문장의 차이를 보면 콜론(:) 의 차이가 있는 다른 문장으로 보입니다. 혹시 문장 앞에 공백이 있는지 살펴보고 trim 을 해서 다시 테스트 해보시기 바랍니다.

    L = ('From stephen.marquard@uct.ac.za Sat Jan  5 09:14:16 2008\n',
         'From: stephen.marquard@uct.ac.za\n',
            'From louis@media.berkeley.edu Fri Jan  4 18:10:48 2008\n',
            'From zqian@umich.edu Fri Jan  4 16:10:39 2008\n')
    
    for line in L:
        if line.startswith('From'): print(line)
    for line in L:
        if 'From' in line: print(line)
    
    
    From stephen.marquard@uct.ac.za Sat Jan  5 09:14:16 2008
    
    From: stephen.marquard@uct.ac.za
    
    From louis@media.berkeley.edu Fri Jan  4 18:10:48 2008
    
    From zqian@umich.edu Fri Jan  4 16:10:39 2008
    
    From stephen.marquard@uct.ac.za Sat Jan  5 09:14:16 2008
    
    From: stephen.marquard@uct.ac.za
    
    From louis@media.berkeley.edu Fri Jan  4 18:10:48 2008
    
    From zqian@umich.edu Fri Jan  4 16:10:39 2008
    
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)