Python解析嵌套方括号

2024-04-16 09:44:22 发布

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

我想把一个带有嵌套方括号的字符串解析成一个嵌套列表。在

示例-parse_nested("abc(def(gh)ij)klm") -> ["abc", ["def", ["gh"], "ij"], "klm"]。在

我的代码可以工作,但我想知道是否有更好的方法来实现这一点。在

这里是我的代码(稍后我将编写检查以捕获格式错误的输入):

def match(s, start, stop):
    start = c = s.index(start)
    level = 0
    while c < len(s):
        if s[c] == start:
            level += 1
        elif s[c] == stop:
            level -= 1
        if level == 0:
            return (start+1, c)
        c += 1
    return None

def parse_nested(s):
    if start not in s and stop not in s:
        return s
    else:
        g = match(s, start, stop)
        first = s[:g[0]-1]
        middle = parse_nested(s[g[0]:g[1]])
        last = parse_nested(s[g[1]+1:])
        result = [first] if first else []
        if type(middle) == str:
            result.append([middle])
        else:
            result.append(middle)
        if last:
            if type(last) == str:
                result.append(last)
            else:
                result += last
        return result

除了使用解析库之外,还有没有更短/更好的方法来实现这一点?在


Tags: middlereturnifparsedefresultlevelstart