【问题标题】:how to turn strings into operations in python?如何将字符串转换为python中的操作?
【发布时间】:2022-07-21 21:21:09
【问题描述】:
我最近试图找到具有给定点的多项式,并偶然发现了我不能像普通数学运算那样使用字符串的问题:”3 + 1” + “2 + 1”,因为它会返回”3 + 12 + 1”。我试图只遍历字符串,但遇到了下一个困难,我不能只取消字符串化操作,如”+” 或”-“。
有谁知道如何解决这个问题?
【问题讨论】:
标签:
python
string
polynomials
operation
【解决方案1】:
如果此计算将纯粹存在于代码中,并且用户没有直接访问权限,那么您可以使用eval()。
例子:
print(eval("3 + 4"))
输出:
7
eval() 的意义在于执行存储为字符串的 Python 代码。如果用户正在输入要在eval() 语句中使用的值,则绝对应该进行一些错误检查以确保用户正在输入数字。如果您的程序打算发布用于商业用途,例如,您将冒着用户输入 Python 代码的风险,而这些代码可以使用 eval() 执行。
【解决方案2】:
eval() 是邪恶的
它可以执行任何命令,包括不安全或恶意字符串。
使用 Pyparsing(更多信息 here 和另一个问题和示例 here)。另一种选择是 ast 模块。如果你想要更多的功能,ast 可以打开更多的命令,但是 pyparsing 应该很好用。