gpt4 book ai didi

python - 递归/迭代函数返回括号内的内容?

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

我正在尝试创建一个函数,它可以查看多个括号并从内到外返回每组括号的内容。因此,给定输入 (9*(2*(6*6))),它将返回

(6*6)
(2*(6*6))
(9*(2*(6*6)))

到目前为止我已经有了这个,但我不确定如何使它适用于多对括号。它只返回最里面的括号。

def in_brackets(str) :   
close_b = 0
open_b = 0

if len(str) < 5 :
return True

while str[close_b] != ')':
close_b += 1
if str[close_b] == '(':
open_b = close_b

in_b = str[open_b:close_b + 1]

return(in_b)

最佳答案

您可以使用pyparsing像这样:

>>> from pyparsing import nestedExpr
>>> nestedExpr('(',')').parseString('(9*(2*(6*6)))').asList()
[['9*', ['2*', ['6*6']]]]

或者,一个很棒的生成器应用程序:

>>> def pcon(string):
... stack = []
... for i, c in enumerate(string):
... if c == '(':
... stack.append(i)
... elif c == ')' and stack:
... start = stack.pop()
... yield string[start + 1: i]
...
>>> for s in pcon('(9*(2*(6*6)))'):
... print "({})".format(s)
...
(6*6)
(2*(6*6))
(9*(2*(6*6)))

关于python - 递归/迭代函数返回括号内的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29419307/

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