Python - заменить все слова в строке, кроме некоторых - PullRequest
0 голосов
/ 18 января 2019

Учитывая текст как

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut ac massa arcu.

Я хочу написать функцию, которая заменяет все слова в тексте, кроме некоторых, определенных в списке keep_list , на заданную строку xxxx . Итак, если

keep_list = ['amet', 'ac']

Я хотел бы иметь вывод, как

xxxx xxxx xxxx xxxx amet, xxxx xxxx xxxx. xxxx ac xxxx xxxx.

Я хочу сохранить все запятые, точки и т. Д. В исходной строке, и это единственная сложность этой функции.

Как бы вы сделали это элегантно?

1 Ответ

0 голосов
/ 18 января 2019

Один из подходов состоит в том, чтобы использовать регулярное выражение для сопоставления отдельных слов, а затем передать обратный вызов на 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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...