python-3.x - 评估Python中字符串中的表达式

标签 python-3.x regex string eval python-re

我有一个包含数学运算的字符串,如何计算 [] 中的字符串以生成如下所示的输出?

mystring = "[2*3-1] plus [4+2] is equal to [5+6]."

re.findall(r"\[(.*?)\]",mystring) # to find 2*3-1, 4+2, 5+6

Output: "5 plus 6 is equal to 11." # expected output. 

最佳答案

您可以在此处将 re.subeval 和回调函数一起使用:

mystring = "[2*3-1] plus [4+2] is equal to [5+6]."
output = re.sub(r'\[(.*?)\]', lambda m: str(eval(m.group(1))), mystring)
print(output)  # 5 plus 6 is equal to 11.

此处的策略是匹配每个 [...] 内的算术表达式,然后将其传递给 lambda 函数。在那里,我们调用 eval() 来获取结果,转换为字符串并生成替换。

关于python-3.x - 评估Python中字符串中的表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67515058/

相关文章:

java - 用逗号和空格分割输入的字符串

python - Matplotlib 查看后自动关闭绘图/图形

python - re.search() 和 re.findall() 挂起

java 正则表达式 帮助

javascript - 需要帮助 : RegEx for a password containing numbers and special chars

java - java/webservice(json) 中的字符串中的空格会产生不同的字节数组

python - 如何修复 'TypeError: invalid keyword argument for sort()'

python-3.x - 获取类型错误 : __init__() missing 1 required positional a rgument: 'on_delete'

python - 为什么规范化会将未定义的字符更改为 'a' ?

C函数删除所有大写字符