Я работаю с Grammatical Evolution (GE) на Python 3.7. Моя грамматика генерирует исполняемые строки в формате:
np.where(<variable> <comparison_sign> <constant>, (<probability1>), (<probability2>))
Тем не менее, строка может стать довольно сложной, с несколькими цепочками np.where
.
<constant>
в некоторых случаях содержит ведущие нули, из-за чего исполняемая строка выдает ошибки. GE должен генерировать выражения, содержащие ведущие нули, однако мне нужно обнаружить и удалить их. Пример возможного решения, содержащего ведущие нули:
"np.where(x < 02, np.where(x > 01.5025, (0.9), (0.5)), (1))"
Проблема:
- Есть два типа чисел, содержащих ведущие нули: int и float.
- Предположим, что я обнаружил 02 в строке. Если я заменю все вхождения в строке с 02 на 2, число с плавающей точкой 01.5025 также изменится на 01.525, чего не может быть.
Я сделал несколько попыток с разными шаблонами re
, но не смог их решить. Чтобы обнаружить, что исполняемая строка содержит ведущие нули, я использую:
try:
_ = eval(expression)
except SyntaxError:
new_expression = fix_expressions(expression)
Мне нужна помощь в создании функции fix_expressions
Python.