2014-09-08 2 views
1

문자열 배열 목록에서 값을 선택하거나 잡는 방법은 무엇입니까? 문자열 배열 목록에서 값 가져 오기?

내 파일의 내용을 읽을 수있는 코드를 실행

, 다음과 같다 :

for line in testFile: 
test = line.split() 

#Output: 
['1', '21', '32', '43', '54', '65', '76', '87'] 
['2', '31', '42', '53', '64', '75', '86', '97'] 
['3', '41', '52', '63', '74', '85', '96', '107'] 
... 
... 

그러나, 지금은 아마도 내가 선택하고 첫 번째 값을 잡아 싶습니다 - 1,2,3을 출력 만, 그것은 의지 나에게 32,42,52 제공하고, 내가 열 여섯을 잡아 경우, 나는 ['1', '21', '32', '43', '54', '65', '76', '87'] 가지고 또는 마지막 행의 값은, 나는 그것을 내가 열 3의 값을 잡기로 결정하면, 말을 의미 print test[0] 또는 for item in test..

를 코딩한다 그것은 나에게 준다 65,75,85 기타 첫 번째 열이 프레임 번호 인 동안 회전 수/변환 열의 값을 설정하려고하기 때문에 열의 수가 동일하며이 질문을했습니다 ...

그렇게 할 수 있습니까?

답변

5

당신은 우리가 open로 파일과 with 문을 열이

with open("inputfile") as f: 
    rows = zip(*[line.split() for line in f]) 

print rows[0] 

처럼 zip 기능, 내용을 전치 할 필요가있다. 그런 다음 한 행씩 읽고 모든 읽기 행을 나눕니다. 그래서 우리는 목록의 목록을 얻습니다. 이제 우리는 각 목록을 실제로 적용한 zip 함수에 적용합니다. 변환 후에는 행이 열이되고 열은 행이됩니다. 예를 들어,

[[1, 2, 3] 
[4, 5, 6] 
[7, 8, 9]] 

이는 내가 무엇을 찾고,

[[1, 4, 7] 
[2, 5, 8] 
[3, 6, 9]] 
+0

감사합니다 될 것입니다! 다시 한 번 감사드립니다! – dissidia

+0

출력 결과가'((1, 2, 3), (4, 5, 6), ...]'였기 때문에 이전에 인쇄를 시도했을 때 오류가 발생했습니다 -'# IndexError :리스트 인덱스가 범위를 벗어남 #'일종의 변환을해야합니까? – dissidia

+0

@dissidia 행과 열의 수가 다른 경우에는 전치 후 적절한 색인을 사용해야 할 수도 있습니다. 내가하는 말 듣고있어? – thefourtheye

관련 문제