安全解析字符串

2024-05-23 19:45:06 发布

您现在位置:Python中文网/ 问答频道 /正文

SymPy配备了很好的sympify()函数,可以将任意字符串解析为SymPy表达式。但它有两个主要缺点:

  1. 它不安全,因为它依赖于臭名昭著的eval()
  2. 它自动简化了读取表达式。e、 sympify('binorimal(5,3)”)将返回表达式10。在

所以我的问题是:

首先,有没有一种方法可以“只解析”字符串而不需要任何额外的计算?我想达到这样的效果:

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

第二,有没有一种公认的方法可以在保证安全的前提下,对任意用户生成的字符串进行语法化(即解析和计算)?这是由SymPy Gamma完成的,所以在实践中是可能的,但问题是需要多少肮脏的工作。在


Tags: 方法函数字符串parse表达式evalreturnslatex
1条回答
网友
1楼 · 发布于 2024-05-23 19:45:06

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

目前还没有官方的办法。我们需要重写sympify来避免eval。请注意,SymPy gamma只使用sympify。它仍然是安全的,因为它在应用程序引擎上是沙盒。在

相关问题 更多 >