split()和rsplit仅返回单个列表项

时间:2013-07-09 21:58:29

标签: python python-3.x

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

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

1 个答案:

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