python 分割字符串并提取子串
我在使用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
2 个回答
0
你看到的某一行可能有两个连续的换行符('\n')。当用readlines()读取这个字符串时,它会被分成多行,但只会有一个[0]索引,而没有[1]索引。
这个程序的输出是什么呢:
import serial // Or is serial a builtin for the version of python you are using?
print repr(serial.Serial("COM3", 9600))
谢谢,
Marlen
1
你的代码在处理输入长度小于等于1的情况下是无法正常工作的。
建议你在代码中检查这个情况,并进行相应的处理。