首页 > 解决方案 > Python - 替换字符串中的所有单词,除了一些

问题描述

给定一个像

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.

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

你会如何优雅地做到这一点?

标签: pythonregexstringstring-matching

解决方案


一种方法是使用正则表达式来匹配单个单词,然后如果单词不在列表中,则传递回调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))

推荐阅读