在下面的代码中,打印“读取”变量输出:“25.00:50.00:72.00”。
reading = ser.readline().decode()
print("VALUE: "+reading.split(':')[0]) # this works printing "25.00"
问题是如果我尝试打印第二([1])或第三([2])元素,我会收到此错误:
print("VALUE: "+reading.split(':')[1])
IndexError: list index out of range
修改1:
在检查“阅读”变量后,我发现还有一个空白行。使用以下代码解决了这个问题:
reading = ser.readline().strip().decode()
我仍然得到同样的错误,我还能做些什么来清理字符串?注意:如果重要的话,字符串将通过串口发送。
编辑2:
问题实际上是与许多评论建议的阅读变量一样。我收到错误是因为前几次从串口返回的读取变量的值实际上是空的,这在打印时在控制台中是不可见的。在解析日期之前检查长度是正确的。
答案 0 :(得分:4)
您的代码是正确的。
>>> reading = "25.00:50.00:72.00"
>>> print("VALUE: "+reading.split(':')[0])
VALUE: 25.00
>>> print("VALUE: "+reading.split(':')[1])
VALUE: 50.00
reading
变量不包含您认为包含的内容。