Функция 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
Vaccines are one of the best tools we have to improve health and well-being around the world.
#TakeResponsibility, encourage your loved ones and those around you to #GetVaccinated.
Visit https://www.vacsitefinder.nphcda.gov.ng/ to locate the nearest vaccination site to you.
📢
Nigerians are advised to continue to #TakeResponsibility.
Visit the nearest government health facility to #GetVaccinated if you have not been previously vaccinated.
🔗
Public Health Advisory:
https://www.ncdc.gov.ng/news/429/public-health-advisory-following-the-presidential-approval-for-the-relaxation-of-covid-19-safety-measures-%26-travel-advisory
@PSCCOVID19 Update:
https://covid19.ncdc.gov.ng/media/files/Press_Release_-_Relaxation_of_COVID-19_Rules_Ako_221212_210142.pdf
#Cholera can be prevented.
Immunisation with the oral cholera vaccine plays an important role in outbreak prevention and control and the long-term elimination of #cholera.
#GetVaccinated
🚨DIPHTHERIA SITUATION REPORT🚨
As of March 9, 2025 (Epi-Week 10):
📍 23 suspected cases reported in Lagos (20) and Katsina (3)
📍 0 confirmed cases this week
📍 42,642 suspected cases recorded since 2022 across 37 states
📍 25,812 confirmed cases & 1,319 deaths (CFR: 5.1%)
🔹 Most affected states: Kano, Yobe, Katsina, Bauchi, Borno
🔹 62.9% of cases are in children aged 1–14 years
🔹 Only 19.3% of confirmed cases were fully vaccinated
💉 Vaccination is key! Protect yourself and your loved ones.
📞 Report suspected cases via NCDC’s toll-free line: 6232
🔗 Read more: https://ncdc.gov.ng/themes/common/files/sitreps/0a1f4b602a9f655c68b316934e533928.pdf
#Diphtheria#GetVaccinated#NCDCNigeria
People most at risk of #diphtheria infection are urged to #GetVaccinated
These include:
➡️Children & adults who have not received any dose of the anti-diphtheria vaccine
➡️Healthcare workers & others who have been exposed to suspected/confirmed cases
➡️People who live in areas with poor sanitation
#TakeResponsibility to stay safe
Severe disease, admissions and deaths disproportionately affect the unvaccinated and those with risk factors i.e., older people, people with underlying health conditions and the immunocompromised.
#GetVaccinated against #COVID19 to stay safe and healthy.
#TakeResponsibility
#COVID19 is still a health threat
If you are experiencing symptoms associated with #COVID19, visit the nearest testing centre close to you for diagnosis & treatment
#GetVaccinated, the vaccine protects you from severe illness, hospitalisation & death
#TakeResponsibility
Severe disease, admissions and deaths disproportionately affect the unvaccinated & those with risk factors i.e., older people, people with underlying health conditions and the immunocompromised.
#GetVaccinated against #COVID19 to stay safe and healthy.
#TakeResponsibility
Getting vaccinated protects you from severe illness, hospitalisation & death from the #COVID19 virus.
#TakeResponsibility, encourage your loved ones and those around you to #GetVaccinated.
Visit https://www.vacsitefinder.nphcda.gov.ng/ to locate the nearest vaccination site to you.
Good health is the most important gift this Christmas season.
#GetVaccinated against #COVID19 to protect yourself and your loved ones.
#TakeResponsibility
Elderly persons & those with existing medical conditions are encouraged to take extra precautions to stay safe & healthy.
💉#GetVaccinated to limit your risk of getting infected with #COVID19.
Vaccination sites: https://nphcda.vaccination.gov.ng/vaccination-sites
#TakeResponsibility
Immunisation with the oral cholera vaccine plays an important role in outbreak prevention and control and the long-term elimination of cholera.
#GetVaccinated
#WorldImmunisationWeek