0

在下面的代码中,打印“阅读”变量输出:“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:

问题实际上与许多评论所建议的阅读变量有关。我收到错误是因为从串行端口返回的读取变量的前几次值实际上是空的,打印时在控制台中不直接可见。在解析日期之前检查长度是否正确解决了我的问题。

4

1 回答 1

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变量不包含您认为它包含的内容。

于 2013-07-09T22:00:56.960 回答