我在python中使用split函数返回的列表遇到了很多麻烦。我可能非常密集。
我的python代码如下
str = "XXX:YYY:ZZZ"
var+=1
ins = str.split(':')
print ins
当脚本运行时,它返回以下结果
['XXX','YYY','ZZZ']
我正在努力做的是拉出包含列表中第二个字符串的字符串。我原以为python代码末尾的代码可以正常工作。
print ins[1]
但是当我运行它时,我得到以下错误
IndexError: list index out of range
非常感谢任何帮助
完整代码
import time
ser = serial.Serial("COM3", 9600)
print ser
time.sleep(3)
print "Sending serial data"
var = 0
while var<=10:
str = ser.readline()
print str
var+=1
ins = str.split(':')
print ins
print ins[0]
if (str.split(':')=='end\n'):
break
if(ser.isOpen()):
print "Serial connection is still open."
ser.close();
print "Serial connectionnow terminated."
返回
Serial<id=0x2a7fc50, open=True>(port='COM3', baudrate=9600, bytesize=8, parity='N', stopbits=1, timeout=None, xonxoff=False, rtscts=False, dsrdtr=False)
Sending serial data
Program Initiated
['Program Initiated\n']
Program Initiated
0:addsd:1
['0', 'addsd', '1\n']
0
1:addsd:2
['1', 'addsd', '2\n']
1
2:end:2
['2', 'end', '2\n']
2
答案 0 :(得分:1)
您正在分析的输入长度&lt; = 1时,您的代码将无效。
尝试检查并在代码中处理它。
答案 1 :(得分:0)
您正在阅读的其中一行可能连续有两个'\ n'字符。当使用readlines()读取该字符串然后吐出时,它没有[1]索引只有[0]索引。
您为该计划获得了哪些输出:
import serial // Or is serial a builtin for the version of python you are using?
print repr(serial.Serial("COM3", 9600))
谢谢, 马兰