[英]If clause dependent on file input doesn't seems to work
有人可以向我解释为什么在以下代码中,消息"Found an instance without object"
没有与输出一起输出吗?
filename= "S1-ADL1.dat"
with open(filename, 'r')as data:
for line in data:
valueList=line.split(' ')
print "valueList[247]"+valueList[247]
print "valueList[249]"+valueList[249]
if valueList[247] == '0' and valueList[249] == '0':
print "Found an instance without object"
continue
elif valueList[247]==0 and valueList[249]!=0:
valueList[247]=valueList[249]
valueList[246]=valueList[248]
print filename+' is written'
我得到的输出如下
valueList[247]0
valueList[249]0
valueList[247]0
valueList[249]0
valueList[247]0
valueList[249]0
S1-ADL1.dat is written
如您所见,有些实例满足if语句,但不会在if子句中显示消息。
这是因为换行符隐藏在拆分的最后结果中。 在您正在阅读的每一line
,您都有类似以下内容: 'xy ... z\\n'
,因此split
的最后结果包含'z\\n'
(例如"0\\n"
)。 或者,它是'\\r'
字符或其他一些空白字符。
尝试使用strip
:
valueList = line.strip().split(' ')
如果输入之间可能还有多个其他空格字符,则可以尝试:
valueList = [v.strip() for v in line.split(' ')]
将它们分别从每块中移除。
另外,您的第二个条件是错误的。 如果不将片段转换为int
,则应使用字符串:
elif valueList[247]=='0' and valueList[249]!='0': # note the apostrophes
同意BartoszKP。
在split(' ')
方法之前使用strip()
split(' ')
方法。
可以在代码中打印valueList并检查通过print "valueList:-" valueList
输入的列表吗? 因此,这将对您更加清楚。
我测试了一些示例测试用例:
valueList:- ['q', '0', '0', '\n']
valueList[247]0
valueList[249]0
Found an instance without object
valueList:- ['q', '0', '0\n']
valueList[247]0
valueList[249]0
或者您可以编写以下if condition
:
if valueList[247][0] == '0' and valueList[249][0] == '0':
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.