通过Python中的序列接收的数据

时间:2015-03-10 12:47:09

标签: python split text-processing strip

我在Raspberry Pi UART上配置了这是我的串行读/写代码:

ser = serial.Serial('/dev/ttyAMA0', 9600, timeout=1)
ser.open()
string = '#SET0\r\n'
print string
ser.write(string)
bytes2read = ser.inWaiting()
print bytes2read
if (ser.inWaiting()>0):
  incoming = ser.readline()
  print incoming
time.sleep(5)
bytes2read1= ser.inWaiting()
print bytes2read1
if (ser.inWaiting()>0):
  print "Data:"
  cont = ser.read(bytesaleer1)
print cont

cont具有以下格式:

#D0:0:0:10
#D1:0:0:56
#D2:0:0:23
#D3:1:1:90
--------

我的问题是,如何获取并保存该变量的最后0?我想保存从cont获得的c0,c1,c2,c3值; 10,56,23和90。 尝试过line.strip,但效果不佳。

1 个答案:

答案 0 :(得分:1)

如果cont是包含所有五行文本的字符串,包括--------分隔符行,我首先将其拆分为行:

cont.splitlines()
    => [ '#D0:0:0:10',
         '#D1:0:0:56',
         '#D2:0:0:23',
         '#D3:1:1:90',
         '--------' ]

然后你可以遍历所有的行,如果该行包含一个冒号,拉下最后一个值并保存它。

vals = []
for line in cont.splitlines():
    if ':' in line:
        v = int(line.split(':')[-1])
        vals.append(v)

>>> vals
[10, 56, 23, 90]