如果即使条件满足,for循环也不起作用

use*_*859 1 python

运行以下代码以将文本文件的列中的值与给定数字进行比较,在本例中为440

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

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
Run Code Online (Sandbox Code Playgroud)

打印列[5]位从txt文件打印出正确的值,但即使它匹配440,for循环中的if也不起作用

感谢您的任何帮助

log*_*yth 5

因为你的440是最后的东西, column[5] == '440\n'

您需要在比较之前去除值.

if columns[5].strip() == '440':
Run Code Online (Sandbox Code Playgroud)

或首先剥离它:

columns = line.strip().split(" ")
Run Code Online (Sandbox Code Playgroud)

或使用一般拆分,它将在所有空格上拆分:

columns = line.split()
Run Code Online (Sandbox Code Playgroud)

或者做一个实际的数字比较

if int(columns[5]) == 440:
Run Code Online (Sandbox Code Playgroud)