Функция 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
🌍 The desert climate zone covers about one-fifth of Earth's land, yet some deserts get colder than snowy regions—Antarctica is classified as the world's largest desert by climate. ✨
#climatezones⚡#deserts⚡#earth⚡#geography⚡#nature
👉subscribe Amazing Geography
👉more Channels
🌍 The boundary between different climate zones doesn't always follow straight lines—on mountain slopes, tropical and temperate climates can exist just a few kilometers apart, packed side by side. ✨
#climatezones⚡#biomes⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 The humid subtropical climate zone stretches across southeastern continents but also appears in parts of East Asia and South America, helping create lush forests and long growing seasons for crops. ✨
#climatezones⚡#vegetation⚡#agriculture⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 The Mediterranean climate zone, found in only a few parts of the world, has mild, rainy winters and hot, dry summers—a combination perfect for growing olives, grapes, and citrus. ✨
#climatezones⚡#Mediterranean⚡#agriculture⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 Antarctica’s interior is the only place on Earth with a true polar climate—temperatures rarely rise above freezing, and less precipitation falls each year than in most deserts. ✨
#climatezones⚡#antarctica⚡#extremes⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 In the world’s subtropical climate zones, some deserts like the Sahara and Arabian receive less than 2 centimeters of rain a year—making them among the driest places on Earth. ✨
#climatezones⚡#deserts⚡#rainfall⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography🌍
🌍 The humid subtropical climate zone—found in places like southeastern China and the southeastern US—brings hot summers, mild winters, and is prone to sudden, powerful thunderstorms. ✨
#climatezones⚡#weather⚡#regions⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 The world’s largest continental climate zone covers central Eurasia, where summers can reach above 40°C and winters drop below –40°C—a giant temperature swing found nowhere else on Earth. ✨
#climatezones⚡#temperature⚡#Eurasia⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 Earth’s Mediterranean climate zones, found in places like California and parts of Australia, support massive wildflower blooms after winter rains despite having hot, dry summers. ✨
#climatezones⚡#biomes⚡#vegetation⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 The subarctic climate zone stretches across vast parts of Canada and Russia, where winters are so cold that forests are called “taiga”—the world’s largest continuous woodland region. ✨
#climatezones⚡#taiga⚡#forests⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 Some climate zones, like the monsoon zone, see one season bringing almost all their annual rain in just a few weeks. This sudden wet season shapes ecosystems and water supplies for millions. ✨
#climatezones⚡#monsoon⚡#rainfall⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels