Как преобразовать строку, содержащую десятичную точку, в список в Python

Строка ввода выглядит следующим образом

a=(2.5+6/3.7*2.09)

Он должен быть преобразован в список для использования в качестве калькулятора

b=['2.5','+','6','/','3.7','*','2.09']

Как преобразовать строку a в список типа b, чтобы числа десятичной запятой рассматривались как одно число, а не как ['2','.','0','9']

2 ответа

Решение

Вы можете использовать разделение строки по нескольким разделителям:

import re
a="2.5+6/3.7*2.09"
print(re.split('\+|\*|/',a))

выход:

['2.5', '6', '3.7', '2.09']

Полное решение:

import re
a="2.5+6/3.7*2.09"
pattern='\+|\/+|\*'
strings=re.split('\+|\*|/',a)
sym=re.findall(pattern,a)
new=[]
for i in range(len(strings)):
    new.append(strings[i])
    try:
        new.append(sym[i])
    except IndexError:
        pass
print(new)

выход:

['2.5', '+', '6', '/', '3.7', '*', '2.09']

Вы можете сделать это, чтобы получить свой результат

result = []
counter = 0
len_a = len(a)
symbol_list = ['*','(',')','+','-','/']

while counter < len_a:
    helper = ''
    if a[counter] not in symbol_list:
        helper += a[counter]
    else:
        result.append(helper)
        result.append(a[counter])
        helper = ''
    counter += 1
return result
Другие вопросы по тегам