Функция 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
Prezident Shavkat Mirziyoyevning Ashxobodga amaliy tashrifi yakunlandi, davlatimiz rahbari Toshkentga joʻnab ketdi. Aeroportda oliy martabali mehmonni Turkmaniston Vazirlar Mahkamasi Raisining oʻrinbosari Xojamirat Geldimiradov va boshqa rasmiy shaxslar kuzatib qoʻydi.
—
Рабочий визит Президента Шавката Мирзиёева в Ашхабад завершился, глава нашего государства отбыл в Ташкент. В аэропорту высокого гостя проводили заместитель Председателя Кабинета Министров Туркменистана Ходжимырат Гелдимырадов и другие официальные лица.
#Mirziyoyev#tashrif#Turkmaniston
Prezident.uz|Facebook|Instagram|YouTube|X
Prezident Shavkat Mirziyoyevning Ashxobodga amaliy tashrifi yakunlandi, davlatimiz rahbari Toshkentga joʻnab ketdi. Aeroportda oliy martabali mehmonni Turkmaniston Vazirlar Mahkamasi Raisining oʻrinbosari Xojamirat Geldimiradov va boshqa rasmiy shaxslar kuzatib qoʻydi.
—
Рабочий визит Президента Шавката Мирзиёева в Ашхабад завершился, глава нашего государства отбыл в Ташкент. В аэропорту высокого гостя проводили заместитель Председателя Кабинета Министров Туркменистана Ходжимырат Гелдимырадов и другие официальные лица.
#Mirziyoyev#tashrif#Turkmaniston
Prezident.uz|Facebook|Instagram|YouTube|X
Prezident Shavkat Mirziyoyevning Ashxobodga amaliy tashrifi yakunlandi, davlatimiz rahbari Toshkentga joʻnab ketdi. Aeroportda oliy martabali mehmonni Turkmaniston Vazirlar Mahkamasi Raisining oʻrinbosari Xojamirat Geldimiradov va boshqa rasmiy shaxslar kuzatib qoʻydi.
—
Рабочий визит Президента Шавката Мирзиёева в Ашхабад завершился, глава нашего государства отбыл в Ташкент. В аэропорту высокого гостя проводили заместитель Председателя Кабинета Министров Туркменистана Ходжимырат Гелдимырадов и другие официальные лица.
#Mirziyoyev#tashrif#Turkmaniston
Prezident.uz|Facebook|Instagram|YouTube|X
Oʻzbekiston Respublikasi Prezidenti Shavkat Mirziyoyev amaliy tashrif bilan Ashxobod shahriga keldi. Davlatimiz rahbarini Turkmaniston Vazirlar Mahkamasi Raisining oʻrinbosari Xojamirat Geldimiradov va boshqa rasmiy shaxslar kutib oldi.
—
Президент Республики Узбекистан Шавкат Мирзиёев прибыл с рабочим визитом в город Ашхабад. Главу нашего государства встретили заместитель Председателя Кабинета Министров Туркменистана Ходжимырат Гелдимырадов и другие официальные лица.
#Mirziyoyev#tashrif#Turkmaniston
Prezident.uz|Facebook|Instagram|YouTube|X
Prezident Shavkat Mirziyoyevning Ashxobodga amaliy tashrifi yakunlandi, davlatimiz rahbari Toshkentga joʻnab ketdi. Aeroportda oliy martabali mehmonni Turkmaniston Vazirlar Mahkamasi Raisining oʻrinbosari Xojamirat Geldimiradov va boshqa rasmiy shaxslar kuzatib qoʻydi.
—
Рабочий визит Президента Шавката Мирзиёева в Ашхабад завершился, глава нашего государства отбыл в Ташкент. В аэропорту высокого гостя проводили заместитель Председателя Кабинета Министров Туркменистана Ходжимырат Гелдимырадов и другие официальные лица.
#Mirziyoyev#tashrif#Turkmaniston
Prezident.uz|Facebook|Instagram|YouTube|X
Oʻzbekiston Respublikasi Prezidenti Shavkat Mirziyoyev Turkman xalqining milliy yetakchisi, Turkmaniston Xalq Maslahati Raisi Gurbanguli Berdimuhamedovning taklifiga binoan amaliy tashrif bilan Ashxobodga joʻnab ketdi.
—
По приглашению Национального лидера туркменского народа, Председателя Халк Маслахаты Туркменистана Гурбангулы Бердымухамедова Президент Республики Узбекистан Шавкат Мирзиёев отбыл с рабочим визитом в город Ашхабад.
#Mirziyoyev#tashrif#Turkmaniston
Prezident.uz|Facebook|Instagram|YouTube|X
O‘zbekiston Respublikasi Prezidenti Shavkat Mirziyoyev "Toshkent-Humo" xalqaro aeroportida Turkmaniston Prezidenti Serdar Berdimuhamedovni kuzatib qo‘ydi. Shu bilan Turkmaniston Prezidentining mamlakatimizga davlat tashrifi yakunlandi.
—
В международном аэропорту "Ташкент-Хумо" Президент Республики Узбекистан Шавкат Мирзиёев проводил Президента Туркменистана Сердара Бердымухамедова. На этом государственный визит Президента Туркменистана в нашу страну завершился.
#Mirziyoyev#tashrif#Turkmaniston
Prezident.uz|Facebook|Instagram|YouTube|X
Prezident Shavkat Mirziyoyevning Ashxobodga amaliy tashrifi yakunlandi, davlatimiz rahbari Toshkentga joʻnab ketdi. Aeroportda oliy martabali mehmonni Turkmaniston Vazirlar Mahkamasi Raisining oʻrinbosari Xojamirat Geldimiradov va boshqa rasmiy shaxslar kuzatib qoʻydi.
—
Рабочий визит Президента Шавката Мирзиёева в Ашхабад завершился, глава нашего государства отбыл в Ташкент. В аэропорту высокого гостя проводили заместитель Председателя Кабинета Министров Туркменистана Ходжимырат Гелдимырадов и другие официальные лица.
#Mirziyoyev#tashrif#Turkmaniston
Prezident.uz|Facebook|Instagram|YouTube|X
O‘zbekiston Respublikasi Prezidenti Shavkat Mirziyoyev Turkman xalqining milliy yetakchisi, Turkmaniston Xalq Maslahati Raisi Gurbanguli Berdimuhamedov bilan telefon orqali muloqot qildi.
—
Состоялся телефонный разговор Президента Республики Узбекистан Шавката Мирзиёева с Национальным Лидером туркменского народа, Председателем Халк Маслахаты Туркменистана Гурбангулы Бердымухамедовым.
#Mirziyoyev#muloqot#Turkmaniston#hamkorlik
Prezident.uz|Facebook|Instagram|YouTube|X
Ўзбекистон Республикаси Президенти Шавкат Мирзиёев ва Туркман халқининг миллий етакчиси, Туркманистон Халқ Маслаҳати Раиси Гурбангули Бердимуҳамедовнинг телефон орқали мулоқоти бўлиб ўтди.
—
Состоялся телефонный разговор между Президентом Республики Узбекистан Шавкатом Мирзиёевым и Национальным лидером туркменского народа, Председателем Халк Маслахаты Туркменистана Гурбангулы Бердымухамедовым.
#Mirziyoyev#muloqot#Turkmaniston#hamkorlik
Prezident.uz|Facebook|Instagram|YouTube|Twitter
O‘zbekiston Respublikasi Prezidenti Shavkat Mirziyoyev Turkman xalqining milliy yetakchisi, Turkmaniston Xalq Maslahati Raisi Gurbanguli Berdimuhamedovning taklifiga binoan 11-12-dekabr kunlari amaliy tashrif bilan ushbu mamlakatda bo‘ladi.
—
Президент Республики Узбекистан Шавкат Мирзиёев по приглашению Национального лидера туркменского народа, Председателя Халк Маслахаты Туркменистана Гурбангулы Бердымухамедова 11-12 декабря посетит эту страну с рабочим визитом.
#Mirziyoyev#tashrif#Turkmaniston#hamkorlik
Prezident.uz|Facebook|Instagram|YouTube|X