如何撤消字符串并计算

时间:2012-11-12 18:58:14

标签: python

  

可能重复:
  parsing math expression in python and solving to find an answer

如何使用加号和附加符号“撤消”字符串以进行计算?

我有一个字符串例如:

  

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

我尝试了int()但是我遇到了错误。如何撤消整个字符串以获得纯整数计算?

2 个答案:

答案 0 :(得分: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源,因此允许控制字符串的任何人(即用户){ {3}}

答案 1 :(得分: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