1

好的,目前,如果给定这样的字符串:

A:0.1,B:0.2,(C:0.3,D:0.4)E:0.5,(F:0.6,G:0.7)H:0.8

我正在使用这个:

child = Pstring[Pstring.find('(')+1:Pstring.find(')')]

遍历字符串,并打印出内括号,并将其分配给变量 'child'

现在,我的问题是,我该如何做同样的事情:

W:1.0,X:1.1(A:0.1,B:0.2,(C:0.3,D:0.4)E:0.5,(F:0.6,G:0.7)H:0.8)Y:0.9  

它只是简单地包含一个外括号来表明所有东西(除了 W 和 X)都是 Y 的孩子

我目前得到“孩子”的输出为:

A:0.1,B:0.2,(C:0.3,D:0.4

而我想要代码做的是首先解析外部括号,然后先获取内部括号,然后最后处理外部括号。

谢谢!

4

1 回答 1

3

如果您只想要内括号的内容,可以使用re.findall()以下正则表达式:

\(([^()]*)\)

例如:

>>> import re
>>> s = 'W:1.0,X:1.1(A:0.1,B:0.2,(C:0.3,D:0.4)E:0.5,(F:0.6,G:0.7)H:0.8)Y:0.9'
>>> re.findall(r'\(([^()]*)\)', s)
['C:0.3,D:0.4', 'F:0.6,G:0.7']

解释:

\(        # literal '('
(         # start capturing group
  [^()]*    # any characters except '(' and ')', any number
)         # end capturing group
\)        # literal ')'

re.findall()返回每个匹配的捕获组的内容。

于 2012-07-06T20:41:04.897 回答