Python 拆分表达式

Python 拆分表达式,python,Python,我必须根据所有括号字符串都应该被拆分的标准,将一个字符串拆分为一系列子字符串 假设我有(9+2-(3*(4+2)),那么我应该得到(4+2),(3*6)和(9+2-18) 基本目标是,我要知道哪个内括号将首先被执行,然后再执行它 请帮忙 如果您能建议使用re模块的方法,这将非常有用。这对每个人来说都不是家庭作业,我理解波兰语符号。我想要的是使用Python和re模块的强大功能,在更少的代码行中使用它 非常感谢……这听起来很像家庭作业,所以我将用一些好的阅读来回答,这可能会引导你走上正确的道路。

我必须根据所有括号字符串都应该被拆分的标准,将一个字符串拆分为一系列子字符串

假设我有
(9+2-(3*(4+2))
,那么我应该得到
(4+2)
(3*6)
(9+2-18)

基本目标是,我要知道哪个内括号将首先被执行,然后再执行它

请帮忙


如果您能建议使用re模块的方法,这将非常有用。这对每个人来说都不是家庭作业,我理解波兰语符号。我想要的是使用Python和re模块的强大功能,在更少的代码行中使用它


非常感谢……

这听起来很像家庭作业,所以我将用一些好的阅读来回答,这可能会引导你走上正确的道路。看一眼。这并不完全是你想要的,但是理解会让你非常接近答案。

评估是不安全的,所以你必须检查输入字符串是否有危险的东西

>>> import re
>>> e = "(9+2-(3*(4+2)))"
>>> while '(' in e:
...     inner = re.search('(\([^\(\)]+\))', e).group(1)
...     e = re.sub(re.escape(inner), eval('str'+inner), e)
...     print inner,
... 
(4+2) (3*6) (9+2-18)

我不知道你到底想做什么,但是如果你想添加其他操作,如果你想对表达式有更多的控制,我建议你使用解析器


试试这样的方法:

import re
a = "(9+2-(3*(4+2)))"
s,r = a,re.compile(r'\([^(]*?\)')
while('(' in s):
    g = r.search(s).group(0)
    s = r.sub(str(eval(g)),s)
    print g
    print s

您的语法是否仅限于()数字和基本运算符+-/*?如果您想解析它,而不仅仅是提取字符串:您不可能用正则表达式解析嵌套的paren(或嵌套的任何东西)(…单独;正则表达式参与标记化)。你需要一个完整的解析器来正确地完成这项工作。你能告诉我,我对匹配字符串的解释是否正确吗?如果它从开头开始,经过(至少其中一个应该在那里,然后(后面的部分被带到g中),它将匹配字符串??