Функция 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
📈 Are employers ready to navigate the shifting demands of the economy? Benjamin Chua, Founder & CEO of SPECO, shares an insightful roadmap on for navigating the evolution of the workforce with the Skills Demand for the Future Economy 2023/24 report.
Read more: https://go.gov.sg/20240108tg#SkillsFutureSG#lifelonglearning
🚢 From business graduate to manager in the Maritime industry, Kumaresh pursued a dream that sparked off during his internship. Book a free consultation with a Skills Ambassador today: https://go.gov.sg/ssg-20231113tg#SkillsFutureSG#lifelonglearning
SSG has signed an MOU with the Institute for Adult Learning Singapore and SUTD Singapore University of Technology & Design to drive cyber-physical learning in the fields of higher education and lifelong learning. The collaboration includes a joint Living Lab, which will allow the study of "live" interaction between the instructors and learners, and use the insights to develop andragogies, professional practices and educational innovations for adult educators and CET learners, leading to higher quality and relevant training for Singaporeans.
#SkillsFutureSG#lifelonglearning
🎉 Big thanks to all who joined us the past 7 weeks at SkillsFuture Festival 2023! Let's continue to embrace #lifelonglearning and get ready to join us again next year for more knowledge, skills, and inspiration. 🌟📚
#SkillsFutureFestival#SkillsFutureSG
🚨 Final week alert! 🚨
SkillsFuture Festival 2023 is coming to a close, but the learning activities are as exciting as week 1 ⚡️.
Check out the full lineup here: go.gov.sg/sffest2023
#SkillsFutureFestival#SkillsFutureSG#lifelonglearning
🌟 Weekly Highlights Alert! 🌟 7-13 August: Embrace a week filled with empowering events and activities designed to supercharge your skills and ignite your career!
Check out the full lineup here: go.gov.sg/sffest2023
#SkillsFutureFestival#SkillsFutureSG#lifelonglearning
🌟 Weekly Highlights Alert! 🌟 From July 31st to August 6th, an incredible lineup of exclusive events and activities await you. Embrace the journey of lifelong learning with us!
Check out the full lineup here: go.gov.sg/sffest2023
#SkillsFutureFestival#SkillsFutureSG#lifelonglearning
🤩 From interior design to sound engineering, Chan Chue proves that the pursuit of knowledge knows no age limits. Inspired to learn a new skill?
Filter to your course of interest here: https://go.gov.sg/ssg20240111tg#SkillsFutureSG#lifelonglearning#OwnYourSkills
Announced today by DPM Lawrence Wong, #ForwardSG report unveils more upskilling and reskilling support for mature mid-career Singaporeans to thrive and build career resilience in a fast-changing economy.
#SkillsFutureSG#lifelonglearning
The Industrial Transformation Asia-Pacific 2022 (ITAP 2022) opens today till 20 Oct at the Singapore EXPO Convention & Exhibition Centre.
To encourage enterprises to invest in their workers’ skills development alongside business transformation, @SkillsFutureSG also showcased initiatives, such as the SkillsFuture Queen Bee, SkillsFuture Career Transition Programme and the SkillsFuture Work-Study Programme, alongside Industry Connect talks by partners to share insights and case studies over the 3-day trade event.
DPM Heng also launched the refreshed Industry Transformation Maps across five sectors at ITAP 2022, in line with Singaporeans goal to grow manufacturing value-added (VA) by 50% from 2020 to 2030. This will be done by focusing on innovation, embracing sustainability and training talent to seize job opportunities.
#SkillsFutureSG#ITAP2022#I4.0