Функция 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
Результаты 3ей попытки Первенства Локомотив!
4ю попытку необходимо выложить - до 29 мая 23:59 по московскому времени;
Напоминаем вам условия первенства: в зачет идет лучшая попытка.
Условия:
- снять дорожку не более чем на 45 сек
- снять 2 одиночных трюка
- опубликовать видео на своей странице ВК
- отметить дисциплину #park#street (можно участвовать в двух дисциплинах с разными роликами)
- отметить @fedskaterussia
- поставить тег #первенство_локомотив
Скоро мы узнаем финалистов!
Добрый вечер! Мы подготовили результаты 2ой попытки Первенства Локомотив!
3ю попытку необходимо выложить - до 22 мая 23:59 по московскому времени;
Кто забыл условия первенства, то напоминаем вам: в зачет идет лучшая попытка.
Условия:
- снять дорожку не более чем на 45 сек
- снять 2 одиночных трюка
- опубликовать видео на своей странице ВК
- отметить дисциплину #park#street (можно участвовать в двух дисциплинах с разными роликами)
- отметить @id145190006 (@fedskaterussia)
- поставить тег #первенство_локомотив
Результаты 1ой попытки - https://vk.com/wall-150050521_4947
Битва продолжается!
Ну что, друзья, готовы снова зарядить пауэрбэнки и вернуться в скейтпарки за своими лучшими дорожками?
Объявляем онлайн-квалификацию на Первенство ОО «РФСО Локомотив»!
Первенство проходит в дисциплинах «парк» и «улица» среди юношей и девушек до 16 лет включительно (это значит, что на момент самого контеста вам должно быть не более 16 лет).
У вас будет 4 попытки, чтобы показать свой лучший результат!
В каждой попытке от вас требуется:
- снять дорожку не более чем на 45 сек
- снять 2 одиночных трюка
- опубликовать видео на своей странице ВК
- отметить дисциплину #park#street (можно участвовать в двух дисциплинах с разными роликами)
- отметить @fedskaterussia
- поставить тег #первенство_локомотив
Время для съемок и публикации своих видео:
1 попытка - до 8 мая 23:59 по московскому времени;
2 попытка - до 15 мая 23:59 по московскому времени;
3 попытка - до 22 мая 23:59 по московскому времени;
4 попытка - до 29 мая 23:59 по московскому времени.
Отличные новости! 🛴😎
У нас пополнение среди паркеров! Встречайте — Николаенко Данил из солнечного Краснодара!
Данил крутой райдер, чей уникальный стиль и бесстрашие уже успели вдохновить многих.
Мы рады объявить, что теперь Данил будет выступать при поддержке нашей команды и бренда!
Добро пожаловать в команду!
📱dkravets15
#park#TechTeamProхуйня
#НовыйРайдер
A mini picnic in the park. 🧺
Just being here and now is the best plan for the day.
Мини-пикник в парке. 🧺
Просто быть здесь и сейчас — лучший план на день.
#LunaEverly#Picnic#DayMindset#Park#Simplicity
A multidisciplinary team of XISUI Design has created a 3D concrete-printed playground in Shandong Province, China.
Named Boulder Park, a 13,000-square-metre community park in Ji’nan, combines massive boulders - a natural material symbolizing eternity - as the core design element. These boulders complement the park’s experiential and practical offerings.
Stones in the shallow creek can be incorporated into the water play installation, and boulders set over a sandpit can be used as climbing and resting play structures. Additionally, cutting-edge 3D-printed concrete technology is used to build a huge rock cave adventure area.
Images 1-2-3-4-5 📸 Zhou Sheng.
Image 6 📸 Hu Yihao.
#design#playgrounddesign#park#urban#3dprinting#3dprintingconcrete#china
📷 La foto è stata scattata nel Parco centrale intitolato a Maksim Gorkij a Lugansk.
Strutture in legno gialle usate come librerie pubbliche.
" Un viaggio nel lato nascosto del Donbass: quello che costruisce invece di distruggere ".
#Donbass#lugask#europa#estate#ferragosto
#Lugansk#europa#russia#italia#Books#lettura#parchi#park