【问题标题】:Evaluate expression in a string in python在python中评估字符串中的表达式
【发布时间】:2021-05-13 06:53:07
【问题描述】:

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

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. 

【问题讨论】:

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


    【解决方案1】:

    您可以在这里使用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() 来获取结果,转换为字符串并生成替换。

    【讨论】:

    • ++ 但 OP 在输出中不需要 []
    • @anubhava 在手机上无法同时看到整个屏幕,抱歉。
    • 你在手机上写了这个格式化的代码,希望我能给你10++
    • 仍在努力寻找可以提升移动打字技能的软件商店:-)
    猜你喜欢
    • 1970-01-01
    • 2016-04-24
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多