通过正则表达式计算带括号的数学表达式

import re
s = "1+(2+(2*300+4) + 6) + (3 * (20+30+4))+(1-20-(20*6))"

def f1(n):
    return eval(n)


while True:
    result = re.split("\(([^()]+)\)",s,1)

    if len(result) == 3:
        front = result[0]
        middle = result[1]
        back = result[2]

        mid = f1(middle)

        s = front + str(mid) + back
        print("len",s)
    
    else:
        w = f1(s)
        print("结果:",w)
        break

 

posted @ 2019-04-28 09:44  greenfan  阅读(554)  评论(0)    收藏  举报