Python - замена слова в строке тем же словом в заглавном регистре с использованием регулярных выражений - PullRequest
1 голос
/ 18 марта 2020

У меня есть следующая строка. Я использую re.sub (), чтобы заменить определенные c слова / шаблоны из списка в моей строке. Однако я хочу использовать эти заглавные буквы / заглавные буквы в их первоначальном виде.

mystring = "hello foo and bar. You are foo bar"
mywords = ['Foo', 'Bar']

желаемый вывод:

"hello Foo and Bar. You are Foo Bar"

Что я пробовал:

new = re.sub(rf"({'|'.join(mywords)})", string.capwords(r"\1"), mystring, flags=re.IGNORECASE)

new2 = re.sub(rf"({'|'.join(mywords)})", (r"\1").title(), mystring, flags=re.IGNORECASE)

Пробовал с использованием Capwords, заголовка и верхнего, но ни один не изменит регистр оригинальное слово. Возможно ли это сделать с помощью re.sub ()?

1 Ответ

1 голос
/ 18 марта 2020

Вы можете использовать lambda вместо:

>>> print ( re.sub(rf'({"|".join(mywords)})',
    lambda m: m.group(1).title(), mystring, flags=re.I) )

hello Foo and Bar. You are Foo Bar
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...