Python-评估字符串中的数学表达式[重复]

2024-01-30

我有一个关于字符串内数学表达式求值的问题。 例如我的字符串如下:

my_str='I have 6 * (2 + 3) apples'

我想知道如何评估这个字符串并得到以下结果:

'I have 30 apples'

有什么办法可以做到这一点吗?

提前致谢。

附:蟒蛇的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'

Notes:

这很简单,它不会处理复杂的方程——比如那些带有平方根、圆周率等的方程,但我相信它符合问题所在的精神。为一个really强有力的答案参见jeffery_the_wind 发布的问题 https://stackoverflow.com/questions/2371436/evaluating-a-mathematical-expression-in-a-string;但我认为对于这个简单的案例来说这可能有点过分了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python-评估字符串中的数学表达式[重复] 的相关文章

随机推荐