Функция sub в regex может принимать функцию в качестве аргумента repl.
📄 Из документации:
If repl is a function, it is called for every non-overlapping occurrence of pattern. The function takes a single match object argument, and returns the replacement string.
То есть для каждого совпадения будет вызвана функция для вычисления замены вместо замены на одну и ту же строку для всех совпадений.
Иными словами, для замены разных совпадений на разные строки не потребуется запускать re.sub() много раз для каждой строки замены. Достаточно определить функцию, которая вернёт строку для каждого из совпадений.
Описание слишком запутанное🤔, давайте лучше рассмотрим на простом примере:
Создаем карту замены. То есть какие строки на какие требуется менять.
remap = {
'раз': '1',
'два': '2',
'три': '3',
'четыре': '4',
'пять': '5',
}
Пишем функцию поиска строки для замены. Единственным аргументом будет объект re.Match.
Используя данные этого объекта мы вычисляем замену on-the-fly!
def get_str(match: re.Match):
word = match.group(1)
return remap.get(word.lower()) or word
Пример текста.
text = '''Раз Два Три Четыре Пять
Вместе будем мы считать
Пять Четыре Три Два Раз
Мы считать научим вас
'''
Теперь запускаем re.sub и вместо строки замены (repl) подаём имя функции.
(Данный паттерн ищет отдельные слова в тексте)
>>> print(re.sub(r'(\w+)', get_str, text))
1 2 3 4 5
Вместе будем мы считать
5 4 3 2 1
Мы считать научим вас
Думаю, достаточно наглядно 🤓
#libs#regex
Анқара шаҳридаги Президент саройида Ўзбекистон Республикаси Президенти Шавкат Мирзиёевни расмий кутиб олиш маросими бўлди.
—
В Президентском дворце в городе Анкаре состоялась церемония официальной встречи Президента Республики Узбекистан Шавката Мирзиёева.
#Mirziyoyev#tashrif#Turkiya#marosim
Prezident.uz|Facebook|Instagram|YouTube|X
Koʻksaroy qarorgohida mamlakatimizga davlat tashrifi bilan kelgan Tojikiston Respublikasi Prezidenti Emomali Rahmonni tantanali kutib olish marosimi boʻlib oʻtdi.
—
В резиденции «Куксарой» состоялась церемония официальной встречи Президента Республики Таджикистан Эмомали Рахмона, прибывшего в нашу страну с государственным визитом.
#Mirziyoyev#tashrif#Tojikiston#marosim
Prezident.uz|Facebook|Instagram|YouTube|X
Koʻksaroy qarorgohida mamlakatimizga davlat tashrifi bilan kelgan Tojikiston Respublikasi Prezidenti Emomali Rahmonni tantanali kutib olish marosimi boʻlib oʻtdi.
—
В резиденции «Куксарой» состоялась церемония официальной встречи Президента Республики Таджикистан Эмомали Рахмона, прибывшего в нашу страну с государственным визитом.
#Mirziyoyev#tashrif#Tojikiston#marosim
Prezident.uz|Facebook|Instagram|YouTube|X
Anqara shahridagi Oqsaroy qarorgohida Oʻzbekiston Respublikasi Prezidenti Shavkat Mirziyoyevni rasmiy kutib olish marosimi boʻlib oʻtdi.
—
В резиденции «Ак сарай» в городе Анкаре состоялась церемония официальной встречи Президента Республики Узбекистан Шавката Мирзиёева.
#Mirziyoyev#tashrif#Turkiya#marosim
Prezident.uz|Facebook|Instagram|YouTube|X
Анқара шаҳридаги Президент саройида Ўзбекистон Республикаси Президенти Шавкат Мирзиёевни расмий кутиб олиш маросими бўлди.
—
В Президентском дворце в городе Анкаре состоялась церемония официальной встречи Президента Республики Узбекистан Шавката Мирзиёева.
#Mirziyoyev#tashrif#Turkiya#marosim
Prezident.uz|Facebook|Instagram|YouTube|X
Pokiston Bosh vazirining qarorgohida Oʻzbekiston Respublikasi Prezidenti Shavkat Mirziyoyevni rasmiy kutib olish marosimi boʻlib oʻtdi.
—
В резиденции Премьер-министра Пакистана прошла торжественная церемония официальной встречи Президента Республики Узбекистан Шавката Мирзиёева.
#Mirziyoyev#tashrif#Pokiston#marosim
Prezident.uz|Facebook|Instagram|YouTube|X
Anqara shahridagi Oqsaroy qarorgohida Oʻzbekiston Respublikasi Prezidenti Shavkat Mirziyoyevni rasmiy kutib olish marosimi boʻlib oʻtdi.
—
В резиденции «Ак сарай» в городе Анкаре состоялась церемония официальной встречи Президента Республики Узбекистан Шавката Мирзиёева.
#Mirziyoyev#tashrif#Turkiya#marosim
Prezident.uz|Facebook|Instagram|YouTube|X
O‘zbekiston Respublikasi Prezidenti Shavkat Mirziyoyev Ashxobod shahridagi Betaraflik monumenti poyiga gul qo‘yish marosimida ishtirok etdi.
—
Президент Республики Узбекистан Шавкат Мирзиёев принял участие в церемонии возложения цветов к Монументу Нейтралитета в городе Ашхабаде.
#Mirziyoyev#tashrif#Turkmaniston#marosim
Prezident.uz|Facebook|Instagram|YouTube|X
“Toshkent-Humo” xalqaro aeroportida davlat tashrifi bilan mamlakatimizga kelgan Turkmaniston Prezidenti Serdar Berdimuhamedovni rasmiy kutib olish marosimi bo‘ldi.
—
В международном аэропорту «Ташкент-Хумо» прошла официальная церемония встречи Президента Туркменистана Сердара Бердымухамедова, прибывшего в нашу страну с государственным визитом.
#Mirziyoyev#tashrif#Turkmaniston#marosim
Prezident.uz|Facebook|Instagram|YouTube|X
“Toshkent-Humo” xalqaro aeroportida mamlakatimizga davlat tashrifi bilan kelgan Qozog‘iston Respublikasi Prezidenti Qasim-Jomart Toqayevni tantanali kutib olish marosimi bo‘lib o‘tdi.
—
В международном аэропорту «Ташкент-Хумо» состоялась торжественная церемония встречи Президента Республики Казахстан Касым-Жомарта Токаева, прибывшего в нашу страну с государственным визитом.
#Mirziyoyev#tashrif#Qozogiston#marosim
Prezident.uz|Facebook|Instagram|YouTube|X
Oʻzbekiston Respublikasi Prezidenti Shavkat Mirziyoyevning rasmiy tashrifi sharafiga “Kantey” qarorgohida Yaponiya Bosh vaziri Sanae Takaichi nomidan qabul marosimi tashkil etildi.
—
В честь официального визита Президента Республики Узбекистан Шавката Мирзиёева в резиденции "Кантэй" состоялся прием от имени Премьер-министра Японии Санаэ Такаичи.
#Mirziyoyev#tashrif#Yaponiya#marosim
Prezident.uz|Facebook|Instagram|YouTube|X
“Kantey” qarorgohida Oʻzbekiston Respublikasi Prezidenti Shavkat Mirziyoyevni rasmiy kutib olish marosimi boʻlib oʻtdi.
—
В резиденции «Кантэй» состоялась церемония официальной встречи Президента Республики Узбекистан Шавката Мирзиёева.
#Mirziyoyev#tashrif#Yaponiya#marosim
Prezident.uz|Facebook|Instagram|YouTube|X