我想从我的一个函数中获取返回数据,并创建一个新列表,其中包含初始列表中包含的两个值作为新列表的索引。
我目前正在尝试的是:我从串行端口获得响应,将响应数据存储在变量中,然后执行.split(' ')
(假设这将返回一个包含分离项目的列表)并留有空格)。
我想要得到的是这样的: gax = ['110.00', '94.00']
我没有使用.split(' ')
方法的回复:
b'[06][1c]ans=33[0d] job=42985[0d] mid=001[0d] status=0;"ok"[0d]do=b[0d] crib=69.80;67.80[0d] gax=110.00;94.00[0d][1e][1d]'
使用.split(' ')
方法的我的数据:
['[06][1c]ans=33[0d]', 'job=42985[0d]', 'mid=001[0d]',
'status=0;"ok"[0d]do=b[0d]', 'crib=69.80;67.80[0d]',
'gax=110.00;94.00[0d][1e][1d]']
这是我尝试列表理解时得到的:
['g', 'a', 'x', '=', '1', '1', '0', '.', '0', '0', ';', '9', '4', '.', '0', '0',
'[', '0', 'd', ']', '[', '1', 'e', ']', '[', '1', 'd', ']']
如何实现自己想做的事?
列表理解是正确的方法吗?
def get_job_from_serial():
response_f = serial_client.readline()
print('job sent from host {}'.format(response_f))
return response_f
jrfromserial = get_job_from_serial()
j = jrfromserial.decode('utf-8').split(' ')
print('la lista de strings disponible son ------ >> {}'.format(j))
# here I was trying to remove the trailing part in brackets.
# what I got was gax=110.00;94.
pre_gax = j[5].rstrip('[0d][1e][1d]]')
print(pre_gax)
gax = [g for g in j[5]]
print(gax)
答案 0 :(得分:0)
得到的结果是因为您正在遍历一个字符串值,该值将为您提供字符列表
要解决gax问题,您应该可以执行以下操作:
gax_nums = pre_gax.lstrip("gax=")
gax = [float(x) for x in gax_nums.split(";")]