Как разделить части элемента списка в новый список? - PullRequest
0 голосов
/ 15 октября 2018

Я хочу получить возвращаемые данные из одной из моих функций и создать новый список, содержащий два значения, содержащиеся в исходном списке, в качестве индексов для нового списка.

То, что я сейчас пытаюсь:Я получаю ответ от моего последовательного порта, я сохраняю данные ответа в переменной, а затем выполняю .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 голосов
/ 15 октября 2018

Результат, который вы получаете, состоит в том, что вы перебираете строковое значение, которое даст вам список символов

Чтобы решить вашу проблему с gax, вы должны просто сделать:

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