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

Python如何实现字典替换文本且跳过skip_words列表中的指定词汇

实现思路

  • 采用正则匹配+回调函数的方案处理,优先匹配长词汇避免短词拆分长词的问题
  • 匹配逻辑优先命中skip_words列表中的词汇,命中后直接返回原内容不做替换
  • 未命中skip_words的内容如果匹配替换字典的key,返回对应替换值

完整实现代码

import re

my_text = "HelloWorld foobar Hello bar..."

my_dict = {
    "Hello": "Hi",
    "bar": "rab"
}

skip_words = ["HelloWorld", "foobar"]

# 收集所有待匹配项,按长度降序排序保证长词优先匹配
all_patterns = skip_words + list(my_dict.keys())
all_patterns.sort(key=lambda x: len(x), reverse=True)
# 转义特殊字符,构建正则模式
pattern = re.compile('|'.join(re.escape(word) for word in all_patterns))

def replace_match(match):
    matched_text = match.group()
    # 匹配到跳过词直接返回
    if matched_text in skip_words:
        return matched_text
    # 匹配到替换key返回对应值
    return my_dict.get(matched_text, matched_text)

# 执行替换
my_text = pattern.sub(replace_match, my_text)
print(my_text)

运行输出结果为:HelloWorld foobar Hi rab...,完全符合预期要求。

代码说明

  • 对所有待匹配的词汇(skip_words + 替换字典key)做长度降序排序,保证长词优先匹配,不会出现长词被拆分为短key误替换的问题
  • 使用re.escape处理每个待匹配词汇,规避特殊正则元字符(比如*、.、?)导致的匹配异常
  • 回调函数中仅对非跳过列表的匹配key做替换,其他内容原封不动返回

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:39:03