SymPy:安全地解析字符串

SymPy配备了可以将任意字符串解析为SymPy表达式的nice sympify()函数。但它有两大缺点:SymPy:安全地解析字符串

  1. 它是不是安全,因为它依赖于臭名昭著的eval()
  2. 它会自动简化了读表达。例如sympify(“二项(5,3)”)将返回表达式10

所以我的问题是:

首先,是有办法“只是解析”的字符串,没有任何附加的计算?我想达到这样的效果:

latex(parse('binomial(5,3)')) #returns '{\\binom{5}{3}}' 

其次,有没有sympify一个接受的方式(即分析和计算)任意用户生成的字符串,而其余的安全吗?它是由SymPy Gamma完成的,所以在实践中是可能的,但问题是需要多少肮脏的工作。

回答:

看看SymPy解析模块中的内部函数。

没有官方的方法来做到这一点。我们需要重写sympify以避免eval。请注意,SymPy gamma只使用sympify。它仍然安全,因为它在App Engine上进行了沙盒处理。

以上是 SymPy:安全地解析字符串 的全部内容, 来源链接: utcz.com/qa/261786.html

回到顶部