Добавьте знаки умножения (*) между коэффициентами

У меня есть программа, в которой пользователь вводит функцию, такую ​​какsin(x)+1, я используюast попытаться определить, является ли строка «безопасной», путем внесения в белый список компонентов, как показано вэтот ответ, Теперь я хотел бы проанализировать строку, чтобы добавить умножение (*) знаки между коэффициентами без них.

Например:

3x->3*x4(x+5) ->4*(x+5)sin(3x)(4) ->sin(3x)*(4) (sin уже в глобальных, в противном случае это было быs*i*n*(3x)*(4)

Есть ли эффективные алгоритмы для достижения этой цели? Я бы предпочел pythonic решение (то есть не сложные регулярные выражения, не потому что они pythonic, но только потому, что я не понимаю их также и хочу решение, которое я могу понять. Простые регулярные выражения в порядке.)

Я очень открыт для использованияsympy (что выглядит действительно легко для такого рода вещей) при одном условии: безопасность. По-видимомуsympy использованияeval под капотом. У меня довольно хорошая безопасность с моим текущим (частичным) решением. Если у кого есть способ сделатьsympy безопаснее при ненадежном вводе, я бы тоже это приветствовал.

Ответы на вопрос(1)

Ваш ответ на вопрос