python拆分字符串并选择子字符串

2024-05-15 22:43:36 发布

您现在位置: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

Tags: 代码false列表varserialprogramserend
2条回答

在分析的输入长度为<;=1的情况下,代码将不起作用。

尝试检查并在代码中处理它。

您正在阅读的一行可能有一行两个“\n”字符。当使用readlines()读取该字符串,然后执行spit时,它没有[1]索引,只有[0]索引。

你得到的程序输出是什么:

import serial // Or is serial a builtin for the version of python you are using?
print repr(serial.Serial("COM3", 9600))

谢谢, 马伦

相关问题 更多 >