2014-01-24 3 views
1

파일에서 숫자를 읽고이를 numbers이라는 배열에 저장하려고합니다. 각 줄 끝에 strip()을 사용하여 각 줄의 끝 부분에있는 \n 개를 제거합니다. 또한 각 줄에 숫자 사이의 공백을 제거하기 위해 split(' ')을 사용합니다.파이썬에서 파일의 각 줄의 시작과 끝에서 공백을 제거하십시오.

문제는 입력 파일에서 줄의 첫 번째 문자와 줄의 마지막 문자가 공백임을 나타냅니다. 어떻게 지울 수 있습니까? 밑줄에 공백이 있습니다

def read_from_file(): 
    f = open('input_file.txt') 
    numbers = [] 
    for eachLine in f: 
     line = eachLine.strip() 
     for x in eachLine.split(' '): 
      line2 = int(x) 
      numbers.append(line2) 
    f.close() 
    print numbers 

이 텍스트 파일입니다 :

_9 5_ 
_2 3 1 5 4_ 
_2 1 5_ 
_1 1_ 
_2 1 2_ 
_2 2 3_ 
_2 3 4_ 
_3 3 4 5_ 
_2 4 5_ 
_2 1 5_ 
_3 1 2 5_ 

답변

3

strip() 이미 양쪽 끝에서 공백을 제거

내 코드입니다. 이 오류는 일치한다 : 당신은 forline하지 eachLine를 사용해야합니다

for x in eachLine.split(' '): 

. 인수없이 split()를 호출하면 당신이 원하는 보통 인 에 공백의 순서를 분할하는 것이

for line in f: 
    for x in line.strip().split(): 
     # do stuff 

참고 :

는 전혀 중간 변수를 사용하여 피할 수있는 문제의이 종류를 방지하려면. 참고 :

>>> 'a b c d'.split() 
['a', 'b', 'c', 'd'] 
>>> 'a b c d'.split(' ') 
['a', '', 'b', 'c', 'd'] 

마지막 결과의 빈 문자열에 유의하십시오. split(' ')은 각각 단일 공백으로 나뉩니다.

+0

에게 선행 및 후행 제거합니다 :', 그래서 루프에서 제거 할 필요가 없습니다 . – Matthias

+0

@Bakuriu 중간 변수를 사용하지 않도록 코드를 변경했으며'split ('')'을 (split)으로 변경했습니다. 이제는 제대로 작동합니다. 고맙습니다 – user1956190

0
with open("myfile.txt") as lines: 
    for line in lines: 
     print line.strip() 

사용 .strip 당신은 (F 라인에 대한() line.strip)에 라인`사용할 수 공백