2014-01-24 76 views
1

我想從文件中讀取一些數字並將它們存儲到名爲numbers的數組中。 我使用strip()爲每行刪除每行結尾處的\n。我還使用split(' ')爲每行刪除數字之間的空格。從python的文件中的每行的開始和結尾刪除空格

問題是,在輸入文件中,行上的第一個字符和行上的最後一個字符是空格。我怎樣才能抹去它們?

這是我的代碼:

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()已經去除兩端的空格。該錯誤是在該行:

for x in eachLine.split(' '): 

你應該在for使用line而不是eachLine

爲了避免這種問題,你可以儘量避免使用中間變量都:

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

請注意,調用split()不帶參數的分割任何空白的序列,這通常是你想要的。請參閱:

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

注意最後的結果的空字符串。 split(' ')分割爲每個單個空白。

+0

你可以在(line.strip()在F線)使用'線路:',所以沒有必要做的循環剝離。 – Matthias

+0

@Bakuriu我已經改變了我的代碼,以便我不使用中間變量,並且已將split('')更改爲split()。現在它正在按照應有的方式工作。謝謝 – user1956190

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

使用.strip除去開頭和結尾的空白

相關問題