Я пытаюсь токенизировать строку (в которой есть данные о математических вычислениях) и создать список.
например,
a = "(3.43 + 2 ^ 2/4)"
function (a) => ['(', '3.43', '+', '2', '^', '2', '/', '4']
Я не хочу использовать внешний импорт (например, nltk).
Проблема, с которой я сталкиваюсь, заключается в сохранении чисел с плавающей запятой без изменений.
Я часами чесал голову и выполнил 2 функции, но проблема возникает, когда она сталкивается с числами с плавающей запятой.
Вот что я сделал:
a = "(3.43 + 2^2 / 4)"
tokens = []
for x in range(1, len(a)-1):
no = []
if a[x] == ".":
y = x
no.append(".")
while is_int(a[y-1]):
no.insert(0, a[y-1])
y -= 1
y = x
while is_int(a[y+1]):
no.extend(a[y+1])
y += 1
token = "".join(no)
no = []
tokens.append(token)
else:
tokens.append(a[x])
print(tokens)
ВЫВОД:
['3', '3.43', '4', '3', ' ', '+', ' ', '2', '^', '2', ' ', '/', ' ', '4']