2012-10-23 6 views
1

이것은 this question의 파생물입니다. 하나에 다음 줄은 python 스크립트에서 제공 :python - 파일에서 여러 열 읽기

c1,c2 = [float(x) for x in line.split()] #convert line into 2 floats and unpack 

두 개의 열이있는 데이터 파일을 읽는.

지금, 내 실제 데이터 파일 (31) 열이 나는 내가 그 라인 확대에 간단한 (그리고 추한) 접근 방식을 시도 할 때 열 (28) 및 (31) 대신 1과 2를 사용해야합니다

c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16,c17,c18,c19,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c30,c31 = [float(x) for x in line.split()] 

ValueError: too many values to unpack 

가 어떻게 제대로 내 파일의 모든 열을 읽을 수 있습니다

나는 오류를 얻을?

+0

모든 행에 31 개의 열이 있습니까? 행이 "들쭉날쭉 함"(일부 열이 31 열 미만이거나 일부 열이있는 경우)이 방법은 실패합니다. –

답변

2

또 다른 방법이 얼마나 많은 값을 볼 수 있습니다에서 루프의 파일

을 읽는 동안 당신이 가지고있는 배열을 사용, N 변수를 인스턴스화 할 필요가 없습니다 :

cols = [float(x) for x in line.split()] 
c28, c31 = cols[27], cols[30] 

그래서, 전체 설정이 보일 것 같은 뭔가 :

with open('<file name here>') as source_file: 
    for line in source_file: 
     cols = [float(x) for x in line.split()] 
     c28, c31 = cols[27], cols[30] 
+0

대단히,이 배열은 주로 배열이 '0'에서 시작한다는 것을 분명히하기 때문에 중요하지 않습니다. (이것은 이상한 결과를 낳았다는 것을 모름) 감사합니다! – Gabriel

1
cols = [float(x) for x in line.split()] 
for i in len(cols): 
    print i, cols[i] 

다만이 경우 당신이 정말