如何将列表项的各个部分分成一个新列表?

时间:2018-10-15 08:10:21

标签: python list-comprehension pyserial

我想从我的一个函数中获取返回数据,并创建一个新列表,其中包含初始列表中包含的两个值作为新列表的索引。

我目前正在尝试的是:我从串行端口获得响应,将响应数据存储在变量中,然后执行.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)

1 个答案:

答案 0 :(得分:0)

得到的结果是因为您正在遍历一个字符串值,该值将为您提供字符列表

要解决gax问题,您应该可以执行以下操作:

gax_nums = pre_gax.lstrip("gax=")
gax = [float(x) for x in gax_nums.split(";")]