|
发表于 2021-9-17 09:08:04
|
显示全部楼层
本帖最后由 qq1151985918 于 2021-9-17 09:16 编辑
参考代码:
- import re
- def get_str(s):
- # 以下非案例 "2*[a3*[c]]" 必须条件
- # 因题目不清,是为防其他条件因素自己想象添加
- # --------------------------------------
- s = s.replace(" ", "").replace("]", "]+")
- while "++" in s or "]+]" in s or "+" == s[-1]:
- s = s.replace("++", "+").replace("]+]", "]]")
- s = s[:-1] if "+" == s[-1] else s
- # --------------------------------------
-
- r1 = re.findall(r"[a-zA-Z]+\d+\*{1}", s)
- r2 = re.findall(r"([a-zA-Z]+)\d+\*{1}", s)
-
- r3 = re.findall(r"\[[a-zA-Z]+\]", s)
- r4 = re.findall(r"\[([a-zA-Z]+)\]", s)
-
- for x, y in zip(r1, r2):
- z = x.replace(y, "'" + y + "'+")
- s = s.replace(x, z)
-
- for x, y in zip(r3, r4):
- z = x.replace(y, "'" + y + "'")
- s = s.replace(x, z)
-
- s = s.replace("[","(").replace("]",")")
- return eval(s)
- if __name__ == "__main__":
- string = "2*[a3*[c]]"
- print(get_str(string))
复制代码 |
|