<分区>
我有一个关于字符串中数学表达式求值的问题。 例如我的字符串如下:
my_str='I have 6 * (2 + 3) apples'
我想知道如何评估这个字符串并得到以下结果:
'I have 30 apples'
有什么办法吗?
提前致谢。
附言python 的 eval
函数在这种情况下没有帮助。当尝试使用 eval
函数进行评估时,它引发了一个错误。
<分区>
我有一个关于字符串中数学表达式求值的问题。 例如我的字符串如下:
my_str='I have 6 * (2 + 3) apples'
我想知道如何评估这个字符串并得到以下结果:
'I have 30 apples'
有什么办法吗?
提前致谢。
附言python 的 eval
函数在这种情况下没有帮助。当尝试使用 eval
函数进行评估时,它引发了一个错误。
最佳答案
这是我的尝试:
>>> import string
>>> s = 'I have 6 * (2+3) apples'
>>> symbols = '^*()/+-'
>>> formula = [(x,s.index(x)) for x in s if x in string.digits+symbols]
>>> result = eval(''.join(x[0] for x in formula), {'__builtins__':None})
>>> s = s[:formula[0][1]] + str(result) + s[formula[-1][1]+1:]
>>> s
'I have 30 apples'
注意事项:
这很简单,它不会处理复杂的方程式——比如那些有平方根、圆周率等的方程式,但我相信它符合问题所追求的精神。要获得真正可靠的答案,请参阅 question posted by jeffery_the_wind ;但我认为对于这个简单的案例来说可能有点矫枉过正。
关于Python - 评估字符串中的数学表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12163224/