2012-11-24 70 views
1

運行下面的代碼在一個文本文件中給定數量的列對值進行比較,在這種情況下,440如果在for循環不工作,即使條件滿足

with open('test.txt', 'a+') as input: 
for line in input: 
    columns = line.split(" ") 
    print columns[5] #test 
    if columns[5] == '440': 
    print 'match' 

test.txt的是隻是:

0 0 0 0 0 1 
0 0 0 0 0 440 
0 0 0 0 0 1 
0 0 0 0 0 440 
0 0 0 0 0 1 
0 0 0 0 0 1 

打印列[5]位打印出從txt文件正確的價值,但即使它匹配440,如果for循環不工作中

謝謝你的任何幫助

+0

請使用'print repr(columns [5])'來代替並顯示我們那個的輸出。 –

+0

你真的打算以''a +''模式打開文件嗎?這是* append *模式。 –

+0

如果你的文本文件確實包含數字,那麼你爲什麼不比較它像: - 'int(columns [0])== 440'? –

回答

5

因爲你的440是上線的最後一件事,column[5] == '440\n'

你需要在比較之前剝離值。

if columns[5].strip() == '440': 

或第一條帶其:

columns = line.strip().split(" ") 

,或者使用普通分,這將分割上的所有空白:

columns = line.split() 

或者做一個實際的數比較

if int(columns[5]) == 440: 
+0

或簡單地使用'split()',它會處理這些空格,'columns = line.split()'。 –

+0

@尼古拉斯好電話。編輯。 – loganfsmyth

+0

@loganfsmyth:no,不帶任何參數的'.split()'或'None'作爲第一個位置參數,從開始和結束去除空白,然後在可變寬度空格(包括換行符和製表符)上進行拆分。 –

相關問題