0

可能重复:
在 python 中解析数学表达式并求解以找到答案

如何“撤消”带有加号和加号的字符串以计算它们?

例如,我有一个字符串:

'6*1+7*1+1*7'

我试过 int() 但我有错误。如何撤消整个字符串以获得纯整数计算?

4

2 回答 2

3

您必须通过解析字符串并计算结果来实际实现您想要支持的操作。一个简单的解析器看起来像:

>>> import functools,operator
>>> sum(functools.reduce(operator.mul, map(int, summand.split('*')), 1)
...     for summand in '6*1+7*1+1*7'.split('+'))
20

请注意,内置eval可以在一次性脚本或交互式控制台中工作,但它将字符串解释为 Python 源代码,因此允许控制字符串的任何人(即用户)执行任意 Python 命令

于 2012-11-12T19:02:36.747 回答
2

使用eval()

In [177]: eval('6*1+7*1+1*7')
Out[177]: 20

exec

In [188]: exec compile('6*1+7*1+1*7','None','single')
Out[188]: 20
于 2012-11-12T18:59:21.487 回答