好吧, 目前,如果给出这样的字符串:
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 的子元素
我目前得到的“child”输出为:
A:0.1,B:0.2,(C:0.3,D:0.4
而我希望代码做的是首先解析外部括号,然后先获取内部括号,然后最后处理外部括号。
谢谢!
最佳答案
如果您只需要内括号的内容,可以使用 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()
返回每个匹配的捕获组的内容。
关于Python内括号字符串解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11369317/