2014-09-03 2 views
0

내 내용은 다음과 같습니다. [아직 탭으로 구분하지 않으면 무시하십시오. 나는 B 2를 얻을, 그것이 내가 A가 1를 얻을 수있는 방법으로 읽고 싶은]파이썬에서 탭으로 구분 된 파일에서 키 값 쌍을 읽음

A B C 

     1    2    3 

될 것입니다 이야기하고, C는 여기에 3

를 얻을 내 코드입니다. 방금 각 줄의 첫 번째 색인을 인쇄하기 시작했습니다. 그러나 내가 보는 결과는 전체 파일 내용입니다.

with open('output.txt','rb') as fp: 
for x in fp: 
    y = x.split('\t') 
    print y[0]  

답변

0

사전을 채우려면 키 집합과 해당하는 값 집합이 필요합니다. 키는 첫 번째 줄에 있고 값은 파일의 두 번째 줄에 있습니다. 그래서 당신은이 작업을 수행 할 수 있습니다

import csv 

answer = {} 
with open('path/to/file') as infile: 
    infile = csv.reader(infile, delimiter='\t') 
    keys = next(infile) 
    values = next(infile) 
    answer.update(dict(zip(keys, values))) 
: 물론

with open('path/to/file') as infile: 
    keys = infile.readline().split() 
    values = infile.readline().strip().split('\t') 

    answer = {} 
    for i,key in enumerate(keys): 
     answer[key] = values[i] 

csv 모듈 가능성 (이 특별한 경우에 그것의 다량을하지 않는 것이) 무거운의 많은 도움이 될 것입니다 당신이 파일을 분리하는 방법을 모르는,하지만 당신은 공백의 형태를 사용하는 것을 알고 있다면

, 당신은 단순히 최초의 솔루션 수정할 수 :

with open('path/to/file') as infile: 
    keys = infile.readline().split() 
    values = infile.readline().split('\t') 

    answer = dict(zip(keys, values)) 
+0

나는이 메시지가 표시되는이 .. '_csv.reader' 물건이있다 'no attribute'readline ' 파이썬 2.7을 사용하고 있습니다. – nick01

+0

고마워요. 탭 구분 여부가 확실하지 않으면 어떻게 바뀌게됩니까? 한 줄에 각 항목 사이에 하나 이상의 공백이있을 수 있습니다. – nick01

+0

@ user2812714 : 방금 당신을위한 편집을 추가했습니다 – inspectorG4dget

관련 문제