我在一个类似于(((2+1)*(4+5))/2)的文件中得到了一个等式。我要找的是里面不同的数学表达式。在本例中:2+1 4+5 (2+1)*(4+5),最后是((2+1)*(4+5))/2。
我从卢金斯开始在这些How can I split a string of a mathematical expressions in python?,但无法找到一个解决方案。
你能帮帮我吗。
发布于 2019-06-24 06:33:02
您可以通过迭代字符串来创建一个简单的解析器,每次您找到一个开口括号时,将索引推送到堆栈中。当您找到一个结束括号时,弹出堆栈中的最后一件东西,并从其中拿出一片到您现在所在的位置:
stack = []
s = "(((2+1)*(4+5))/2)"
for i, c in enumerate(s):
if c == "(":
stack.append(i+1)
if c == ")":
f = stack.pop()
print(s[f:i])结果
2+1
4+5
(2+1)*(4+5)
((2+1)*(4+5))/2如果pop()无法工作,或者在完成时堆栈中还保留了一些东西,则可以充实- this以进行错误检查。
https://stackoverflow.com/questions/56730777
复制相似问题