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

Python正则将字符串数字包入方括号、下划线替换为点并消除多余前置点

问题原因

你现有代码的执行顺序逻辑有问题:先给数字包裹方括号,再全局替换所有下划线为点,原本位于数字前的下划线就会变成方括号前多余的点。

解决方案

方案1:先匹配「下划线+数字」替换,再处理剩余下划线

执行顺序调整为先替换所有下划线加数字的组合为带方括号的数字,再把剩下的下划线统一替换为点:

import re
i = "fields_5_type_fields_1_name"
# 先把_数字 替换成[数字]
i = re.sub(r"_(\d+)", r"[\g<1>]", i)
# 再把剩余的所有下划线替换为点
i = re.sub(r"_", r".", i)
print(i) # 输出:fields[5].type.fields[1].name

方案2:先全局替换下划线为点,再处理数字前的点

也可以先把所有下划线替换为点,再把数字前多余的点和数字一起匹配,替换为带方括号的数字:

import re
i = "fields_5_type_fields_1_name"
# 先把所有下划线替换为点
i = re.sub(r"_", r".", i)
# 再把.数字 替换成[数字]
i = re.sub(r"\.(\d+)", r"[\g<1>]", i)
print(i) # 输出:fields[5].type.fields[1].name

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 02:06:05