python 分割字符串并提取子串

0 投票
2 回答
6737 浏览
提问于 2025-04-16 13:04

我在使用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的情况下是无法正常工作的。

建议你在代码中检查这个情况,并进行相应的处理。

撰写回答