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

Python敏感词屏蔽函数问题:保留原输入大小写实现等长星号替换

解决禁用词替换时保留原始大小写的问题

原代码的问题在于将整个输入字符串转为小写后再进行替换,导致最终返回结果全部是小写,无法保留原始输入的大小写格式。要解决这个问题,我们可以使用正则表达式实现不区分大小写的匹配,同时直接在原字符串上进行替换,保留非禁用词部分的原始大小写。

修改后的实现代码

import re

def censure(sent):
    bad = ('whatever', 'bad', 'word', 'you', 'can', 'think', 'of')
    # 构建正则模式:匹配任意禁用词,带单词边界避免部分匹配,忽略大小写
    pattern = re.compile(r'\b(' + '|'.join(bad) + r')\b', re.IGNORECASE)
    # 替换匹配到的内容为等长星号
    return pattern.sub(lambda match: '*' * len(match.group()), sent)

chat = input('Type text with bad words:\n')
print(censure(chat))

关键说明

  • 单词边界\b:确保只匹配完整的禁用词,不会误替换包含禁用词的其他单词(比如不会把badly里的bad替换掉)。
  • re.IGNORECASE标志:让正则匹配时不区分大小写,不管输入的禁用词是Bad、BAD还是bad都能被识别。
  • lambda替换函数:通过match.group()获取匹配到的原始内容(保留原大小写),生成对应长度的星号进行替换,既完成屏蔽又保留了原字符串的格式。

测试示例

输入:Whatever you think, this is a Bad word!
输出:******** **** ***** this is a *** ****!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 15:24:25