Python - 评估字符串中的数学表达式

标签 python string math expression 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/

相关文章:

python - Aptana Studio 中黑底黑字显示的文本

Java 字符串解析和评估

python - 使 string.replace 语句的序列更具可读性

c - 如何读取文件同一行的多个字符串?

java - 找到要旋转的度数?

math - PowerShell 数学问题?

python - Django 缓存不工作 cached_queries() 没有参数(给定 1)

python - 使用 Sqlalchemy 和 Pandas 对多对多关系进行批量插入

c# - C# 中的反向婴儿床

python - Paramiko PKey.from_private_key_file 给我 "__init__() got an unexpected keyword argument ' 文件名'”