开发者

python split string and pick substring

I am having a lot of trouble with the list returned by the split function in python. I am probably being incredibly dense.

My python code is as follows

str = "XXX:YYY:ZZZ"
var+=1
ins = str.split(':')
print ins

When the script runs it returns the following result

['XXX','YYY','ZZZ']

What i am struggling to do is pull out the string contained the second string in the list. I would have thought the following code at the end of the python code would work.

print ins[1]

but when i run it i get the following error

IndexError: list index out of range

Any help would be much appreciated

full code

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."

This returns

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


Your code will not work in instances where the input you're analyzing has a length <= 1.

Try checking for that and handling it in your code.


One of the lines you are reading probably has a two '\n' characters in a row. When that string is read with readlines() and then spit it has no [1] index only a [0] index.

What output do you get for the program:

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

Thanks, Marlen

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜