You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现嵌套括号内容提取并按规则解析的方案咨询

嵌套括号解析实现方案

你之前使用的正则re.findall('\(([^)]+)',ln)会在匹配到第一个)就停止匹配,遇到嵌套括号时会提前截断内容,无法处理嵌套场景。正则本身对任意层级的嵌套结构支持有限,直接通过栈遍历字符的方式更稳定可靠。

具体实现步骤

  • 先封装单个分割后元素的解析函数,通过栈记录括号嵌套层级,逐字符处理内容
  • 遍历你已经分割得到的keys列表,逐个传入解析函数得到最终结果

完整代码示例

def parse_bracket_element(s):
    # 非括号开头的元素直接返回原字符串
    if not s.startswith('('):
        return s
    stack = []
    current = ''
    res = None
    for c in s:
        if c == '(':
            # 遇到左括号,把当前内容压栈,重置缓存
            stack.append(current)
            current = ''
        elif c == ')':
            # 遇到右括号,弹出栈顶的上一级内容
            parent = stack.pop()
            if not stack:
                # 已经到最外层括号
                if parent:
                    # 有外层key,说明是嵌套结构,返回字典
                    res = {parent: current}
                else:
                    # 无外层key,单层括号,返回列表
                    res = [current]
            else:
                # 还在嵌套里,把当前内容拼到上一级
                current = parent
        else:
            # 普通字符追加到缓存
            current += c
    return res

# 衔接你已有的代码
for ln in open(file,"r").read().split("\n"):
    if ln.startswith(";"):
        keys = ln[1:].split("_")
        # 处理每个元素得到最终结果
        parsed_result = [parse_bracket_element(k) for k in keys]
        print(parsed_result)

运行效果测试

针对你的示例标题;star/stellar_(class(ification))_(chart),运行后输出结果为:

['star/stellar', {'class': 'ification'}, ['chart']]

完全符合需求。

内容的提问来源于stack exchange,提问作者dimsdewn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 13:27:04