2011-10-21 3 views
0

여기에서 문제가 발생하여 도움을 얻을 수 있습니다.텍스트 파일의 모든 행에서 문자열을 검색합니다 : Python

각 줄에는 ID 번호와 설명 자 세트가있는 텍스트 파일이 있습니다. 설명자는 각 행마다 고유하거나 다를 수 있습니다 (문서 전체에서 여러 번 사용할 수 있음).

기본적으로 특정 설명자를 포함하는 모든 ID 번호를 식별하려고합니다 ... 내 코드가 작동하지만 모든 것 대신 설명 자의 첫 번째 항목 만 찾습니다. 어떤 빠른 수정?

모든 설명자가 이미 목록에 있습니다. 텍스트 파일의 예 :

ID_45555 (tab) some irrelevant data (tab) **DESCRIPTOR1** DESCRIPTOR2 DESCRIPTOR3 

ID_55555 (tab) some irrelevant data (tab) DESCRIPTOR200 **DESCRIPTOR1** DESCRIPTOR599 

코드 :

for line in file: 
    line = line.strip() 
    line = line.split("\t") 
    IDNUMBER = line[0] 
    DESCRIPTOR = line[2] 
    for x in total_list: 
     if x in DESCRIPTOR: 
      print x, DESCRIPTOR 

답변

0

나는 키와 설명 및 값으로 해당 ID를, 이것에 대한 딕셔너리를 사용하는 것이 좋습니다 것입니다. 파일을 살펴보고 각 줄에서 각 설명자 아래에있는 사전에 나열된 목록에 ID를 추가하십시오. 예 :

by_descriptors = collections.defaultdict(list) 
for line in file: 
    id, _, descriptors = line.strip().split("\t") 
    for d in descriptors.split(): 
     by_descriptors[d].append(id) 
# to find all IDs for a given descriptor: 
by_descriptors.get(id, []) 
관련 문제