Python 迭代解析非XML?

Python 迭代解析非XML?,python,python-2.7,Python,Python 2.7,所以我想解析一个字符串并将其展平,它包含一个可变深度的数字 以下是字符串的示例: '(7&(10&(22|25))|(22&25)|(25&(10|22)))|(9&(10&(22|25))|(22&25)|(25&(10|22)))|(33&22&25)' 这意味着,我们在第一级有3种不同的可能性,如下表所示: ['7&(10&(22|25))|(22&25)|(25&(10|22

所以我想解析一个字符串并将其展平,它包含一个可变深度的数字

以下是字符串的示例:

'(7&(10&(22|25))|(22&25)|(25&(10|22)))|(9&(10&(22|25))|(22&25)|(25&(10|22)))|(33&22&25)'
这意味着,我们在第一级有3种不同的可能性,如下表所示:

['7&(10&(22|25))|(22&25)|(25&(10|22))', '9&(10&(22|25))|(22&25)|(25&(10|22))', '33&22&25']
此列表中的最后一个选项只能是一件事(因为它没有内部标高)

但是,第一个变量非常多变,因此我将重点介绍: “7&”表示该级别中的每个元素都有一个7

然后我们从中提取子级别,得到:

['10&(22|25)', '22&25', '25&(10|22)']
在这里,索引1是一个死胡同,所以我们对该树的最终输出是'7&22&25'。对于索引0,我们有一个7&10的父母和一个22&25的孩子,这意味着独立的树,因此我们的最终结果是7&10&22和7&10&25,对于最后一个,我们有7&25&10和7&25&22

我有没有办法迭代地做这个?我已经有了解析器来提取单个级别,提取是否有一个数字字符加上一个符号,并提取子级别


非常感谢。

我想你想要的不是迭代,而是

假设您有一个解析器函数“parse”,它可以接受一个字符串并返回子字符串列表,它可能如下所示:

def parse_recursively(string):
    if (string is dead end): # base case
        return [string]

    else:
        children = parse(string) # returns a list of children strings
        rv = list()
        for s in children:
            rv.extend(parse_recursively(s))

        return rv