2014-09-06 3 views
0

텍스트 파일의 각 줄에서 첫 번째 숫자를 반복하려고합니다. 여기에 내 코드입니다 :파이썬에서 가져온 텍스트 파일의 각 줄의 첫 번째 숫자를 반복하십시오.

f = open('test.txt') 
for line in iter(f): 
    print line[1] 
f.close() 

그리고 여기에 내가 통해 반복하는 데 노력하고있어 텍스트 파일입니다 :

[11, (28, 33, 45, 55, 62, 66)] 
[10, (28, 33, 45, 55, 62, 66.69)] 
[9, (28, 33, 45, 55, 62, 67)] 
[7, (28, 33, 45, 55, 62, 69)] 
[6, (28, 33, 45, 55, 62, 69.69)] 
[8, (28, 33, 45, 55, 62, 74)] 
[11, (28, 33, 45, 55, 62, 75.86)] 
[11, (28, 33, 45, 55, 62, 76)] 
[12, (28, 33, 45, 55, 62, 76.69)] 
[13, (28, 33, 45, 55, 62, 77.86)] 

불행하게도이 코드는 1, 1, 9, 7, 등 대신 무엇의 값을 생성 내가 찾고있는 (11, 10, 9, 7 등). 저는 파이썬 초보자입니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 감사! 당신은 하나의 문자를 받고 그 이유는 그래서 코드에서

답변

1
line = "[11, (28, 33, 45, 55, 62, 66)]" 

from ast import literal_eval 
print literal_eval(line)[0] 
11 

line[0] 는 .. line[1]1 등이다 [이다.

literal_eval을 입력하면 줄을 실제 list으로 바꿀 수 있으며 원하는 요소에 액세스 할 수있는 목록과 마찬가지로 색인을 생성 할 수 있습니다.

line = r"[11, (28, 33, 45, 55, 62, 66)]" 
import re 
print re.findall("\d+",line)[0] 
11 

세 번째 옵션을 사용 lstripsplit :

line = "[11, (28, 33, 45, 55, 62, 66)]" 

print line.lstrip("[").split(",")[0] 
11 

lstrip("[")에서, [ 제거하는에 우리 다음 split

또한 \d+ 하나 이상의 연속적인 숫자를 검색 할 re을 사용할 수 있습니다 쉼표와 첫 번째 요소를 얻을.

0

지금 당장 각 줄은 단순히 문자열로 취급됩니다. 그 때문에 각 줄의 두 번째 문자를 보게됩니다. 첫 번째 줄의 첫 번째 숫자 만 나타납니다. .

은 무엇 당신이해야 할 것은, 다음, 0 번째 요소는 '11', '10'등

0

것보다는 문자열보다는 요소의 목록으로 각 행을 평가이다 나는의 사용과 Padraic의 답변을 찾을 아주 간단하고 좋은 때문에 입력 파일에있는 데이터의 형식, 그러나 평가는 정규 표현식을 사용하고자하는 경우 다음에 refrence에 대한

import re 
f = open('test.txt') 
for line in iter(f): 
    print re.match("\[(\d*)", line).group(1) 

: 파이썬 re 문서 : https://docs.python.org/2/library/re.html

관련 문제