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

Python如何用正则匹配unX:0子串并按列表对应值替换

实现方案

先将list1转换为映射字典,再用正则匹配所有unX:0格式的子串,通过回调函数查找字典完成替换即可。

完整代码

import re

str1 = '(((un5:0,(un7:0,un8:0):15):9,(un4:0,un10:0):10):5,((un6:0,un1:0):10,(un3:0,un9:0,un2:0):14):12):7):0'
list1 = ['un1:21', 'un2:32', 'un3:43', 'un4:3', 'un5:2', 'un6:21', 'un7:3', 'un8:4', 'un9:3', 'un10:2']

# 构造unX到对应完整值的映射字典
replace_map = {}
for item in list1:
    un_key = item.split(':')[0]
    replace_map[un_key] = item

# 正则匹配unX:0格式子串,调用回调替换
new_str1 = re.sub(r'(un\d+):0', lambda match: replace_map[match.group(1)], str1)
print(new_str1)

运行结果

输出完全符合需求:

'(((un5:2,(un7:3,un8:4):15):9,(un4:3,un10:2):10):5,((un6:21,un1:21):10,(un3:43,un9:3,un2:32):14):12):7):0'

逻辑说明

  • 转换list1为字典是为了实现O(1)效率的键值查找,避免每次匹配都遍历列表
  • 正则r'(un\d+):0'会匹配所有un+数字+:0格式的子串,括号将unX部分捕获为分组
  • re.sub的回调函数会在每次匹配到目标子串时执行,取出捕获的unX分组,查字典返回对应替换值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:36:02