2013-06-30 4 views
2

큰 텍스트 파일에서 단어 목록을 검색하려고합니다. 각 단어에 대해 반복적으로 명령을 실행하는 것보다 목록이 더 쉬울 것이라고 생각했지만 어떻게해야하는지 잘 모르겠습니다. 아래의 스크립트는 문자열 값을 사용하여 더 많거나 적게 작동하지만 아래의 '문자열'을 'dict'목록의 모든 값으로 대체하려고합니다.python : 목록의 값을 텍스트 파일로 검색

import csv 

count = 0 
dic = open('dictionary','r') #changed from "dict" in original post 
reader = csv.reader(dic) 
allRows = [row for row in reader] 
with open('bigfile.log','r') in inF: 
    for line in inF: 
     if 'string' in line: #<---replace the 'string' with dict values 
     count += 1 
count 
+3

하지 마십시오 변수 이름을 'dict'; 그것은 내장을 가린다. 목록 comp 대신에'list (reader)'만 할 수 있습니다. –

+0

'사전'CSV 파일에 몇 개의 열이 들어 있습니까? 열 값은 무엇입니까? 어떤 열을 일치 시키려고하십니까? –

+0

나는 1 열로 수천 줄이있다. 이 목록은 알려진 스팸 사이트의 차단 목록입니다. List는 예상했던 것, spam.spam.com 또는 기타와 유사합니다. csv 파일에는 ','이 없습니다. '\ n' – 16num

답변

2

는 설정 대신에 파일을 변환 :

이제
with open('dictionary','r') as d: 
    sites = set(l.strip() for l in d) 

한 줄에 효율적인 회원 테스트를 수행 할 수 당신이 당신의 라인을을 분할 할 수 있습니다 제공 :

with open('bigfile.log','r') as inF: 
    for line in inF: 
     elements = line.split() 
     if sites.intersection(elements): 
      count += 1 
+0

예! Martijn Pieters와 다른 모든 사람들에게 감사드립니다. – 16num

+0

@sixteenornumber : 수정 해 주셔서 감사합니다. 코드 변경을 위해 리뷰 작성자가 파이썬을 알기를 기대할 수 없기 때문에 오히려 거부되지 않는 사소한 코드 오타 수정이 더 자주 거부되므로 코멘트를 작성하는 것이 더 쉽습니다. –

관련 문제