在数学方程式中获取表达式

时间:2019-06-24 06:17:45

标签: python python-2.7

我有一个方程式,我在文件中输入了(((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? 但是无法解决。.

可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

您可以通过遍历字符串来制作基本的解析器,并且每次找到开头括号时,将索引推入堆栈。找到圆括号后,弹出堆栈中的最后一个内容,然后从中切出一个片段:

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()不起作用,或者完成后还剩下一些东西,则说明括号没有平衡-可以充实地进行错误检查。