可能重复:
parsing math expression in python and solving to find an answer
如何使用加号和附加符号“撤消”字符串以进行计算?
我有一个字符串例如:
'6 * 1 + 7 * 1 + 1 * 7'
我尝试了int()但是我遇到了错误。如何撤消整个字符串以获得纯整数计算?
答案 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