python3 regex exercise
来源:互联网 发布:肖像漫画软件 编辑:程序博客网 时间:2024/06/08 00:18
#!/usr/bin/env python3## regex exercise# parses the formula and takes out the pattern like '(a + b)' one by one from most inner level to outer level# then calculates them and replace with theirs values, until the whole formula parsed down to single 'a + b'import re# formula = '1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )'formula = '0.0102031 - (2) / 2 * ( (60-30 +( -40 /5) * (9.0123-2*5/3 + 7 /3*99/4*2998 +10 * 568/144.4440044 )) - (-4*3)/ (16-3*2) )'num = '(\d+\.\d+|\d+)' # float OR integerops = '[\+|\-|\*|\/]'plus_minus = '[\+|\-]'times_divide = '[\*|\/]'the_one = '\(\s*(\-?%s+\s*%s+\s*)*%s+\s*\)' % (num, ops, num) # (a + b -c) OR (-c)the_pm = '\s*(\-?%s+\s*%s+\s*)+%s+\s*' % (num, plus_minus, num) # equation with * or /the_td = '\s*(\-?%s+\s*%s+\s*)+%s+\s*' % (num, times_divide, num) # equation with + or -# do * and / calculationdef do_times_divide(formula): while True: result = re.search(the_td, formula) if result: group = result.group() r = eval(group) print('times_divide:', formula, group, r, sep=' | ') formula = formula.replace(group, str(r)) # print(formula) else: break formula = formula.replace('(', '').replace(')', '') # print(formula) return formula# do + and - calculationdef do_plus_minus(formula): while True: result = re.search(the_pm, formula) if result: group = result.group() r = eval(group) print('plus_minus:', formula, group, r, sep=' | ') formula = formula.replace(group, str(r)) # print(formula) else: break formula = formula.replace('(', '').replace(')', '') # print(formula) return formulaprint('original formula and result:', formula, eval(formula), sep=' | ')while True: result = re.search(the_one, formula) if result: group = result.group() print('main:', formula, group, sep=' | ') new_group = do_times_divide(group) formula = formula.replace(group, new_group) formula = formula.replace(new_group, do_plus_minus(new_group)) formula = formula.replace('+-', '-') else: breakprint('formula after parsing and result:', formula, eval(formula), sep=' | ')
阅读全文
0 0
- python3 regex exercise
- Python3-正则表达式-创建、匹配Regex对象
- Exercise
- exercise
- Exercise
- exercise
- Regex
- Regex
- Regex
- Regex
- regex
- Regex
- regex
- Regex
- regex
- Regex
- regex
- Regex
- oracle is not in the sudoers file. This incident will be reported.
- java hibernate 报错 org.hibernate.hql.internal.ast.QuerySyntaxException: Unable to locate class
- Android双击返回退出应用的写法
- Android沉浸式状态栏
- 嵌入式软件可靠性设计
- python3 regex exercise
- 【C++】链接器及undefined reference的秘密
- 集体开发之代码风格一致
- tensorflow入门 Mnist
- 数据库连接池
- 程序员养成
- zookeeper技术内幕-数据与存储
- 软件调试笔记38
- 某NFC读取身份证