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

使用Python正则提取复杂嵌套括号内字符串并修改代码示例

嵌套括号内容提取与代码转换实现

一、嵌套括号内容提取

处理多层嵌套括号的字符串时,普通字符串分割会因层级问题导致截断错误,通过栈计数法跟踪括号层级,可精准定位最外层括号的闭合位置:

实现代码

def extract_nested_content(s, start_char='[', end_char=']'):
    start_idx = s.find(start_char)
    if start_idx == -1:
        return None
    count = 1
    end_idx = start_idx + 1
    while end_idx < len(s) and count > 0:
        if s[end_idx] == start_char:
            count += 1
        elif s[end_idx] == end_char:
            count -= 1
        end_idx += 1
    return s[start_idx+1 : end_idx-1] if count == 0 else None

测试示例

输入字符串:abc[a[12] + b[1] * (12 + 13)] = efg[14]
调用函数提取abc[ ]内的内容:

input_str = "abc[a[12] + b[1] * (12 + 13)] = efg[14]"
result = extract_nested_content(input_str)
print(result)  # 输出:a[12] + b[1] * (12 + 13)

二、特定代码格式转换

针对self._vars[xxx] = yyy格式的代码,将其转换为setattr(self, xxx, yyy)格式,结合上述嵌套括号提取逻辑拆分内容后重新拼接:

实现代码

def convert_vars_to_setattr(s):
    prefix = 'self._vars['
    if not s.startswith(prefix):
        return s
    content = extract_nested_content(s, '[', ']')
    if content is None:
        return s
    assign_pos = s.find('] = ')
    if assign_pos == -1:
        return s
    right_part = s[assign_pos+3:]
    return f"setattr(self, {content}, {right_part})"

测试示例

输入代码字符串:self._vars[os.path.basename(b)[:-4]] = nn.Parameter(v, requires_grad=requires_grad)
调用函数转换:

input_code = "self._vars[os.path.basename(b)[:-4]] = nn.Parameter(v, requires_grad=requires_grad)"
result_code = convert_vars_to_setattr(input_code)
print(result_code)
# 输出:setattr(self, os.path.basename(b)[:-4], nn.Parameter(v, requires_grad=requires_grad))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 17:27:22