Вы можете использовать re.sub
с шаблоном чередования, созданным путем соединения слов в списке. Включите шаблон чередования в утверждения границы слова \b
, чтобы он соответствовал только целым словам. Используйте отрицательный lookbehind и lookahead, чтобы избежать совпадения слов, уже заключенных в двойные кавычки:
import re
words = ["apple", "orange", "plum"]
s = 'Sita has apple and "plum" and loves drinking snapple'
print(re.sub(r'\b(?!<")(%s)(?!")\b' % '|'.join(words), r'"\1"', s))
Это выводит:
Sita has "apple" and "plum" and loves drinking snapple
Демо: https://ideone.com/Tf9Aka