Python返回第一组嵌套圆括号中的所有子字符串

2024-09-29 21:31:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我想找到一种有效的方法,从字符串中选择第一组嵌套括号中包含的所有子字符串。你知道吗

例如:

input: a d f gsds ( adsd ) adsdaa    
output: ( adsd )

input: adadsa ( sadad adsads ( adsda ) dsadsa ) ( dsadsad ) 
output: ( sadad adsads ( adsda ) dsadsa )

intput: a ana anan anan ( adad ( sad ) sdada asdad ) ( sadad ( adasd ) asda ) sdafds ( afdasf )
output: ( adad ( sad ) sdada asdad )

请注意,可能有多组嵌套括号。你知道吗

一种解决方案是通过char扫描字符串char,并跟踪打开的圆括号的数量,直到(减少数量,一旦有一个闭合圆括号)计数器再次变为0。你知道吗

我想知道有没有更简单的方法?也许是正则表达式?你知道吗

谢谢


Tags: 方法字符串inputoutput括号sadasdadanan
1条回答
网友
1楼 · 发布于 2024-09-29 21:31:05

我写了一个小函数:

def parens(s):
    i=s[s.find('('):s.find(')')].count('(')   #counts number of '(' until the first ')'
    groups = s[s.find('('):].split(')')       #splits the string at every ')'
    print ')'.join(groups[:i]) +')'           #joins the list with ')' using the number of counted '('

演示:

>>> parens('a d f gsds ( adsd ) adsdaa')
( adsd )

>>> parens('adadsa ( sadad adsads ( adsda ) dsadsa ) ( dsadsad )')
( sadad adsads ( adsda ) dsadsa )

>>> parens('a ana anan anan ( adad ( sad ) sdada asdad ) ( sadad ( adasd ) asda ) sdafds ( afdasf )')
( adad ( sad ) sdada asdad )

相关问题 更多 >

    热门问题