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

如何在Python中用re.sub结合字典实现精准多子串替换?

批量精确替换字符串中的子串(结合字典与正则单词边界)

问题核心:需要基于字典批量替换字符串中的完整单词,避免部分匹配导致的错误替换(如pineapple中的apple、category中的cat被误替换)。

解决方案

给字典中的每个待匹配关键词添加正则单词边界\b,同时用re.escape()处理关键词中的特殊正则字符(保证兼容性),再构建统一的正则模式进行替换。

示例代码:

import re

words = "apple pineapple cat category data old_data"
dic = {"apple":"apple_new", "cat":"cat_new", "data":"data_new"}

# 给每个关键词添加单词边界,并转义特殊字符
pattern = re.compile("|".join(r"\b{}\b".format(re.escape(key)) for key in dic.keys()))

new_words = re.sub(pattern, lambda m: dic[m.group(0)], words)
print(new_words)

运行结果

apple_new pineapple cat_new category data_new old_data

原理说明

  • \b:正则中的单词边界,匹配单词开头/结尾的位置(仅在字母、数字、下划线与其他字符的分界处生效),确保只匹配完整单词。
  • re.escape():自动转义关键词中的正则特殊字符(如., *, ?等),避免这些字符被当作正则语法解析,提升代码健壮性。
  • 用|拼接所有带边界的关键词,实现一次正则匹配所有需要替换的目标。

内容的提问来源于stack exchange,提问作者胡峻誠

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 18:30:59