最近做一个用 pyhton 替换文本中特定词的需求
要求将特定单词(单词前后没字母)替换成一串等长的星号 *,不区分大小写
因为 re 支持的正则语法不是标准语法
通过在线正则工具生成的表达式直接用很容易出错
# sensitive = {'Q': '*', 'ww': '**', 'EEE': '***', 'RRRR': '****'}
def doFilter(data, sensitive):
for key, value in sensitive.items():
res = r'(?i)(^|(?<=[^a-zA-Z]))' + key + r'($|(?=[^a-zA-Z]))'
pattern = re.compile(res)
data = re.sub(pattern, value, data)
return data
一劳永逸的办法是使用第三方工具 regex 替换 re
# sensitive = {'Q': '*', 'ww': '**', 'EEE': '***', 'RRRR': '****'}
def doFilter(data, sensitive):
for key, value in sensitive.items():
res = r'(?i)(^|(?<=[^a-zA-Z]))' + key + r'($|(?=[^a-zA-Z]))'
pattern = regex.compile(res)
data = regex.sub(pattern, value, data)
return data