zoukankan      html  css  js  c++  java
  • 正则表达式

     re.findall('D?(-?d+.?d*)','1-12*(60+(-40.35/5)-(-4*3))')

    import re
    
    def dealwith(express):
        if '+-' in express:express = express.replace('+-','-')
        if '--' in express:express = express.replace('--','+')
        return express
    
    def cal_exp_son(exp_son):
        if '*' in exp_son:
            a,b = exp_son.split('*')
            return str(float(a)*float(b))
        elif '/' in exp_son:
            a, b = exp_son.split('/')
            return str(float(a) / float(b))
    
    def cal_express_no_bracket(exp):
        #计算没有括号的表达式
        exp = exp.strip('()')
        while True:
            ret = re.search('d+.?d*[*/]-?d+.?d*',exp)
            if ret:
                exp_son = ret.group()
                ret = cal_exp_son(exp_son)
                exp = exp.replace(exp_son,ret)
                exp = dealwith(exp)
            else:  #表达式中没有乘除法了
                ret = re.findall('-?d+.?d*',exp)
                sum = 0
                for i in ret:
                    sum += float(i)
                return str(sum)
    
    def remove_bracket(new_express):
        while True:
            ret = re.search('([^()]+)',new_express)
            if ret:
                express_no_bracket = ret.group()
                ret = cal_express_no_bracket(express_no_bracket)
                new_express = new_express.replace(express_no_bracket,ret)
                new_express = dealwith(new_express)
            else:
                ret = cal_express_no_bracket(new_express)
                return ret
    
    expression='1-2*((60+2*(-3-40.0/5)*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2))'
    new_express = expression.replace(' ','')
    res = remove_bracket(new_express)
    print(res)
    计算器
  • 相关阅读:
    CA证书扫盲,https讲解。
    关于jquery的入门,简单的封装。
    anglar JS使用两层ng-repeat嵌套使用,分辨$index
    JS中=>,>>>是什么意思
    撰写html标签的快捷方式2
    CSS 中伪类的顺序
    撰写html标签的快捷方式1
    文字换行显示
    input 控件监听回车确认按钮。
    git常用命令整理
  • 原文地址:https://www.cnblogs.com/xuqidong/p/13388383.html
Copyright © 2011-2022 走看看