Python 如何将列表项的各个部分分离到新列表中?
我想从一个函数中获取返回数据,并创建一个新列表,其中包含初始列表中包含的两个值作为新列表的索引 我目前正在尝试的是:我从串行端口获得一个响应,我将响应数据存储在一个变量中,然后执行Python 如何将列表项的各个部分分离到新列表中?,python,list-comprehension,pyserial,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&
.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]'
['[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', ']']
使用.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]'
['[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', ']']
这就是我尝试列表理解时得到的结果:
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]'
['[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)
您得到的结果是,您正在循环一个字符串值,该值将为您提供一个字符列表 要解决gax问题,您应该能够做到:
gax_nums = pre_gax.lstrip("gax=")
gax = [float(x) for x in gax_nums.split(";")]