给出类似这样的文字
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut ac massa arcu.
我想编写一个函数,用给定的字符串 xxxx 替换文本中的所有单词(列表 keep_list 中定义的单词除外)。所以,如果
keep_list = ['amet', 'ac']
我想要一个类似的输出
xxxx xxxx xxxx xxxx amet, xxxx xxxx xxxx. xxxx ac xxxx xxxx.
我要保留原始字符串的所有逗号,点等,这是此功能的唯一困难。
您将如何以优雅的方式做到这一点?
答案 0 :(得分:4)
一种方法是使用正则表达式匹配单个单词,然后将回调传递到re.sub()
,如果单词不在列表中,则用xxxx
替换。
import re
txt = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut ac massa arcu.'
keep = ['amet', 'ac']
print(re.sub(r'\b\w+\b', lambda w: w.group() if w.group() in keep else 'xxxx', txt))