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