python基础-6.2正则表达式,计算器练习
content = "1-2*((60-30+(1-40/5*5+3-2*5/3)*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2))" def func(string): new_list = re.split("\(([^()]+)\)", string, 1) if len(new_list) > 1: new_string = new_list[0] + str(eval(new_list[1])) + new_list[2] return func(new_string) else: return new_list[0] print(eval(func(content))) 1、先分割最小括号,"\(([^()]+)\)" 2、用eval来计算最小括号内容,eval取巧了,可以再次用正则来计算。 3、在拼接成新的字符串 4、递归 5、返回无括号的字符串