gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 03:34:24 25 4
gpt4 key购买 nike

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

例如:

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。

我想知道是否有更简单的方法来做到这一点?也许用正则表达式?

谢谢

最佳答案

我写了一个小函数:

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 )

关于Python - 返回第一组嵌套括号中的所有子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29810464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com