Как расспарсить формулу в текстовом формате?
Добый день, подскажите пожалуйста! Функция draft создает график по формуле (в данном случае y = np.sin(t)), функция работает, но есть одна проблема! Для полной реализации нужно вводить формулу вручную и передавать в функцию в виде строки, где в последующем нужно ее распарсить и применить для построения графика. Пробывал реализовать через алгоритм сортировочной станции, ругается на переменную t, тк она не является числом, она диапазон значений (как я это понял) Если кто то встречался, отпишитесь, буду очень благодарен за помощь!
PS Формула может быть абсолютно произвольная
import datetime
import matplotlib.pyplot as plt
import numpy as np
def draft(interval, step, formula):
start = datetime.datetime.now().day - datetime.timedelta(days=interval).days
end = datetime.datetime.now().day
t = np.linspace(start, end, 500)
# ???
y = np.sin(t)
plt.grid()
plt.xticks(np.arange(start, end, step))
plt.plot(t, y)
plt.show()
draft(interval=6, step=2, formula="sin(t)")
Ответы (1 шт):
Регулярные выражения - сила. r'(?P<func>[\w\d]+)\((?P<arg>[\w\d]+)\)' и считать найденные группы. должны увидеть 'sin' и 't'
Проверить можно тут https://regex101.com/r/Nso1sr/1