Функция 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 polar climate zones, found near the North and South Poles, have average summer temperatures below 10°C. Here, permanent ice and tundra dominate, with only hardy mosses and lichens surviving. ✨
#climate⚡#polar⚡#tundra⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography🌍
🪐 The galaxy NGC 2685, also called the Helix Galaxy, is a striking example of a "polar ring galaxy," where a large ring of stars and gas orbits nearly perpendicular to the main disk. This rare and twisted structure probably formed when NGC 2685 captured material from another galaxy, creating a cosmic spectacle that challenges our ideas of how galaxies grow and evolve. ✨
#galaxies⚡#shapes⚡#polar⚡#nasa⚡#galaxy⚡#stars⚡#astronomy⚡#universe⚡#cosmos⚡#space
👉subscribe Universe Mysteries
🌍 Antarctica is home to “blue ice” areas where strong winds strip away snow and expose centuries-old glacier ice, creating shimmering fields that reflect nearly as much sunlight as fresh snow. ✨
#glaciers⚡#Antarctica⚡#polar⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 In Antarctica’s Dry Valleys, glaciers flow slowly over bare rock and create icy waterfalls called “ice falls,” frozen in mid-cascade for years in the planet’s coldest, driest desert region. ✨
#glaciers⚡#Antarctica⚡#polar⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 In Antarctica’s McMurdo Dry Valleys, some glaciers create striking red waterfalls called “Blood Falls.” The color comes from iron-rich water oxidizing as it flows out of the ice. ✨
#glaciers⚡#polar⚡#Antarctica⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography🌍
🌍 Some Antarctic glaciers can move several meters in a single day, driven by gravity and melting underneath. These "ice rivers" shape the landscape faster than most people imagine. ✨
#glaciers⚡#polar⚡#Antarctica⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography🌍
🌍 In polar regions, "diamond dust" can fall from clear skies. This glittering ice fog is made of tiny ice crystals that drift in the air, sparkling in sunlight even when there’s no snowstorm. ✨
#glaciers⚡#polar⚡#arctic⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 In polar regions, some glaciers move so fast they form towering "ice cliffs" over 100 meters high at their edges. These dramatic walls can collapse suddenly into the sea during major calving events. ✨
#glaciers⚡#polar⚡#ice⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 Some polar glaciers are so thick that their bottoms lie below sea level for hundreds of meters. These vast "marine ice sheets" hold enough frozen water to alter global coastlines if they melt. ✨
#glaciers⚡#polar⚡#ice⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography🌍
🌍 Some glaciers can glow blue beneath the surface. This vivid color appears when dense, compressed ice absorbs red light and scatters only the blue, creating striking icy caverns in polar regions. ✨
#glaciers⚡#polar⚡#ice⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography🌍
🌍 Some polar lakes never see sunlight and stay covered with ice year-round. Microbes living under this ice survive in complete darkness, making them some of the most isolated life forms on Earth. ✨
#glaciers⚡#polar⚡#microbiology⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels