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
相关产品推荐
相关产品推荐

