SymPy оснащен функцией sympify(), которая может анализировать произвольные строки в выражениях SymPy. Но у него есть два основных недостатка:SymPy: Безопасные синтаксические строки
- Это не безопасно, так как она опирается на пресловутый Eval()
- Он автоматически упрощает выражение для чтения. например sympify («бином (5,3)») возвратит Выражение 10.
Так что мои вопросы:
Во-первых, есть ли способ, чтобы «просто разобрать» строку, без каких-либо дополнительных вычислений ? Я хочу, чтобы достичь чего-то вроде этого эффекта:
latex(parse('binomial(5,3)')) #returns '{\\binom{5}{3}}'
Во-вторых, есть общепринятый способ sympify (т.е. разобрать и вычислительные) произвольные пользовательские сгенерированные строки, оставаясь при этом в безопасности? Это сделано SymPy Gamma, поэтому это возможно на практике, но вопрос в том, сколько грязной работы необходимо.