2014-09-30 4 views
0

때로는 텍스트 파일에서 특정 문자열을 포함하는 행만 가져와야합니다 (예 : 로그 파일을 구문 분석하는 중). 나는 가능한 두 라이너 거기 보았다, 그러나파이썬에서 문자열을 포함하는 줄을 효율적으로 추출하십시오.

with open(TEXTFILENAME,'r') as f: 
    contents = f.readlines() 

targets = [s for s in contents if FINDSTRING in s] 

: 나는 보통이 방법을 내가 두 번째 방법이 더 효율적입니다 궁금

with open(TEXTFILENAME,'r') as f: 
    targets = [s for s in f.readlines() if FINDSTRING in s] 

가 있는지이 경우 법에 readlines() 기능 일종의 반복자로서.

답변

2

모든 회선 목록을 생성하는 readlines 로의 호출을 피하십시오. 따라서 더 빨라야합니다.

with open(TEXTFILENAME,'r') as f: 
    targets = [line for line in f if FINDSTRING in line] 
+0

고마워요! 나는 뭔가를 간과했다는 것을 알았다. << – pepoluan

관련 문제