Функция 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
Во Франции в Коньяке производят не только то, о чем все знают.
Мы нашли там органический джин. Просто взгляните на эту керамику.
Содержимое не менее прекрасное - листья лайма из Тайланда, можжевельник из Великобритании, кориандр, мандарин, красный перец; все компоненты с экологичных плантаций без использования химических удобрений.
Generous! Новый, свежий, яркий уже в Regina bar 🍸
#reginabar#gin#regina
Три поколения семьи Друэн занимаются производством превосходного кальвадоса, известного всему миру.
Но кальвадос - не единственный прекрасный напиток в их линейке.
Мастер-дистиллер Гийом Друэн создал уникальный Le Gin (Джин с большой буквы), на основе дистиллята из яблочного сидра.
Помимо традиционного можжевельника в состав вошли еще 7 натуральных растительных ингредиентов, наиболее гармонично сочетающихся с ароматом кальвадоса. Это имбирь, ваниль, лимон, кардамон, корица, лепестки розы и миндаль, причем каждый из них был настоян и дистиллирован отдельно, а затем смешан в определенных пропорциях.
Le Gin - единственный в мире джин, в котором соединились ароматы 30 сортов нормандских яблок и 8 растений с разных уголков планеты.
В Regina мы делаем с ним White lady, Aviation и Gimlet, хотя с тоником он потрясающий.
#gin#reginabar#regina
Regina - это не только о джинах.
Наступила весна, расцвела сирень у нас под окнами, а мы привезли солнечный и прекрасный аперитиво - Del Professoro.
Названный в честь великого Джери Томаса - отца первых коктейлей; с мандаринами, сицилийскими апельсинами и специями, он раскрывает привычный вкус Spritz с новой стороны, добавляя ему глубины и объема.
Давайте вместе радоваться весне и классным коктейлям.
#regina#reginabar#cocktails
Вы же знаете как мы вас любим?
По многочисленным просьбам, Шартрёз теперь в баре.
Самое время встретить лето с безупречным Last World или классическим Bijou.
Regina - один из редких баров, у которых есть это изумрудное сокровище.
Приходите 🍸
#reginabar#cocktails#regin@reginabargin
Посмотрите какого красавчика мы завели в баре прямиком из Австралии.
Four Pillars Bloody Shiraz Gin
Джин с колоритным названием Bloody Shiraz Gin.
Настаивался напиток на винограде Шираз урожая 2019 года.
Процесс длился восемь недель, а каждый день жидкость тщательно перемешивали.
На финише будущий джин сцедили, а вот фильтровать не стали, чтобы сохранить уникальный вкус и аромат.
В результате получился джин насыщенного красного цвета с цитрусово-ягодным ароматом и приятным, пряным послевкусием.
Крепость напитка составила 37,8%.
Это очень вкусно в гимлете, потрясающе в кловере и неожиданно в негрони.
Приходите попробовать)
#gin#fourpillars#regina#reginabar#cocktails