2012-11-24 72 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'作为第一个位置参数,从开始和结束去除空白,然后在可变宽度空格(包括换行符和制表符)上进行拆分。 –

相关问题