Python-替换字符串中的所有单词,除了某些单词

时间:2019-01-18 09:02:52

标签: python regex string string-matching

给出类似这样的文字

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.

我要保留原始字符串的所有逗号,点等,这是此功能的唯一困难。

您将如何以优雅的方式做到这一点?

1 个答案:

答案 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))