经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 其他 » 正则表达式 » 查看文章
python3 正则表达式 re模块之辣眼睛 计算器
来源:cnblogs  作者:晓风小峰  时间:2019/5/5 8:49:28  对本文有异议

额。。。学到几个常用模块了,也要其中考试了,每天晚上敲一点,敲得脑壳疼,不过又想到好一点的办法了,有时间再改吧。

此非吾所欲也,实属无奈也。。。。复习之路漫漫,吾将到书上求索,在此不多逗留,我挥一挥衣袖,留下一段惨不忍睹的代码,且不带走一片云彩。

  1. 1 #!usr/bin/env/ python
  2. 2 # -*- coding:utf-8 -*-
  3. 3 # Author: XiaoFeng
  4. 4 import re
  5. 5
  6. 6
  7. 7 a = '1 - 2 * ( ( 6 0 -3 0 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )'
  8. 8 a_new = re.sub(" ", "", a)
  9. 9 print(a_new)
  10. 10 ret = re.findall(r"\([^()]*\)", a_new)
  11. 11 while ret:
  12. 12 ret = re.findall(r"\([^()]*\)", a_new)
  13. 13 print(ret)
  14. 14 for element in ret:
  15. 15 formula = element
  16. 16 formula = formula.replace("(", "")
  17. 17 formula = formula.replace(")", "")
  18. 18 # print(formula)
  19. 19 for i in formula:
  20. 20 if "--" in formula:
  21. 21 formula = formula.replace("--", "+")
  22. 22 elif "*" == i:
  23. 23 handle = re.search(r"[-+]?\d+\.?\d*\*[-+]?\d+\.?\d*", formula)
  24. 24 if handle:
  25. 25 handle_list = handle.group()
  26. 26 else:
  27. 27 continue
  28. 28 handle_a, handle_b = re.findall(r"[-+]?\d+\.?\d*", handle_list)
  29. 29 if "." in handle_a or "." in handle_b:
  30. 30 result = float(handle_a) * float(handle_b)
  31. 31 if result >= 0:
  32. 32 result = "+" + str(result)
  33. 33 result = str(result)
  34. 34 else:
  35. 35 result = int(handle_a) * int(handle_b)
  36. 36 if result >= 0:
  37. 37 result = "+" + str(result)
  38. 38 result = str(result)
  39. 39 formula = formula.replace(handle_list, result)
  40. 40 # print(formula)
  41. 41 elif "/" == i:
  42. 42 handle = re.search(r"[-+]?\d+\.?\d*/[-+]?\d+\.?\d*", formula)
  43. 43 if handle:
  44. 44 handle_list = handle.group()
  45. 45 else:
  46. 46 continue
  47. 47 handle_a, handle_b = re.findall(r"[-+]?\d+\.?\d*", handle_list)
  48. 48 if "." in handle_a or "." in handle_b:
  49. 49 result = float(handle_a) / float(handle_b)
  50. 50 if result >= 0:
  51. 51 result = "+" + str(result)
  52. 52 result = str(result)
  53. 53 else:
  54. 54 result = int(handle_a) / int(handle_b)
  55. 55 if result >= 0:
  56. 56 result = "+" + str(result)
  57. 57 result = str(result)
  58. 58 formula = formula.replace(handle_list, result)
  59. 59 # print(formula)
  60. 60 for i in formula:
  61. 61 if "--" in formula:
  62. 62 formula = formula.replace("--", "+")
  63. 63 elif "+" == i:
  64. 64 handle = re.search(r"[-+]?\d+\.?\d*\+[-+]?\d+\.?\d*", formula)
  65. 65 if handle:
  66. 66 handle_list = handle.group()
  67. 67 else:
  68. 68 continue
  69. 69 handle_a, handle_b = re.findall(r"[-+]?\d+\.?\d*", handle_list)
  70. 70 if "." in handle_a or "." in handle_b:
  71. 71 result = float(handle_a) + float(handle_b)
  72. 72 if result >= 0:
  73. 73 result = "+" + str(result)
  74. 74 result = str(result)
  75. 75 else:
  76. 76 result = int(handle_a) + int(handle_b)
  77. 77 if result >= 0:
  78. 78 result = "+" + str(result)
  79. 79 result = str(result)
  80. 80 formula = formula.replace(handle_list, result)
  81. 81 # print(formula)
  82. 82 elif "-" == i:
  83. 83 handle = re.search(r"[-+]?\d+\.?\d*-[-+]?\d+\.?\d*", formula)
  84. 84 if handle:
  85. 85 handle_list = handle.group()
  86. 86 else:
  87. 87 continue
  88. 88 handle_a, handle_b = re.findall(r"[-+]?\d+\.?\d*", handle_list)
  89. 89 if "." in handle_a or "." in handle_b:
  90. 90 result = float(handle_a) + float(handle_b)
  91. 91 if result >= 0:
  92. 92 result = "+" + str(result)
  93. 93 result = str(result)
  94. 94 else:
  95. 95 result = int(handle_a) + int(handle_b)
  96. 96 if result >= 0:
  97. 97 result = "+" + str(result)
  98. 98 result = str(result)
  99. 99 formula = formula.replace(handle_list, result)
  100. 100 # print(formula)
  101. 101 # print(formula)
  102. 102 # print(element)
  103. 103 a_new = a_new.replace(element, formula)
  104. 104 # print(a_new)
  105. 105 print("------------")
  106. 106 print(a_new)
  107. 107 formula = a_new
  108. 108 for i in formula:
  109. 109 if "--" in formula:
  110. 110 formula = formula.replace("--", "+")
  111. 111 elif "*" == i:
  112. 112 handle = re.search(r"[-+]?\d+\.?\d*\*[-+]?\d+\.?\d*", formula)
  113. 113 if handle:
  114. 114 handle_list = handle.group()
  115. 115 else:
  116. 116 continue
  117. 117 handle_a, handle_b = re.findall(r"[-+]?\d+\.?\d*", handle_list)
  118. 118 if "." in handle_a or "." in handle_b:
  119. 119 result = float(handle_a) * float(handle_b)
  120. 120 if result >= 0:
  121. 121 result = "+" + str(result)
  122. 122 result = str(result)
  123. 123 else:
  124. 124 result = int(handle_a) * int(handle_b)
  125. 125 if result >= 0:
  126. 126 result = "+" + str(result)
  127. 127 result = str(result)
  128. 128 formula = formula.replace(handle_list, result)
  129. 129 print(formula)
  130. 130 elif "/" == i:
  131. 131 handle = re.search(r"[-+]?\d+\.?\d*/[-+]?\d+\.?\d*", formula)
  132. 132 if handle:
  133. 133 handle_list = handle.group()
  134. 134 else:
  135. 135 continue
  136. 136 handle_a, handle_b = re.findall(r"[-+]?\d+\.?\d*", handle_list)
  137. 137 if "." in handle_a or "." in handle_b:
  138. 138 result = float(handle_a) / float(handle_b)
  139. 139 if result >= 0:
  140. 140 result = "+" + str(result)
  141. 141 result = str(result)
  142. 142 else:
  143. 143 result = int(handle_a) / int(handle_b)
  144. 144 if result >= 0:
  145. 145 result = "+" + str(result)
  146. 146 result = str(result)
  147. 147 formula = formula.replace(handle_list, result)
  148. 148 print(formula)
  149. 149 print("=========")
  150. 150 for i in formula:
  151. 151 if "--" in formula:
  152. 152 formula = formula.replace("--", "+")
  153. 153 elif "+" == i:
  154. 154 handle = re.search(r"[-+]?\d+\.?\d*\+[-+]?\d+\.?\d*", formula)
  155. 155 if handle:
  156. 156 handle_list = handle.group()
  157. 157 else:
  158. 158 continue
  159. 159 handle_a, handle_b = re.findall(r"[-+]?\d+\.?\d*", handle_list)
  160. 160 if "." in handle_a or "." in handle_b:
  161. 161 result = float(handle_a) + float(handle_b)
  162. 162 if result >= 0:
  163. 163 result = "+" + str(result)
  164. 164 result = str(result)
  165. 165 else:
  166. 166 result = int(handle_a) + int(handle_b)
  167. 167 if result >= 0:
  168. 168 result = "+" + str(result)
  169. 169 result = str(result)
  170. 170 formula = formula.replace(handle_list, result)
  171. 171 print(formula)
  172. 172 elif "-" == i:
  173. 173 handle = re.search(r"[-+]?\d+\.?\d*-[-+]?\d+\.?\d*", formula)
  174. 174 if handle:
  175. 175 handle_list = handle.group()
  176. 176 else:
  177. 177 continue
  178. 178 handle_a, handle_b = re.findall(r"[-+]?\d+\.?\d*", handle_list)
  179. 179 if "." in handle_a or "." in handle_b:
  180. 180 result = float(handle_a) + float(handle_b)
  181. 181 if result >= 0:
  182. 182 result = "+" + str(result)
  183. 183 result = str(result)
  184. 184 else:
  185. 185 result = int(handle_a) + int(handle_b)
  186. 186 if result >= 0:
  187. 187 result = "+" + str(result)
  188. 188 result = str(result)
  189. 189 formula = formula.replace(handle_list, result)
  190. 190 print(formula)

 

原文链接:http://www.cnblogs.com/xf1262048067/p/10810502.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号