Функция 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
Веревка и кольт / Une corde, un Colt... (Cemetery Without Crosses) — Робер Оссейн
спагетти-вестерн | драма | триллер | евровестерн
Несмотря на очевидное первенство среди итальянцев, этот по большей части французский спагетти-вестерн один из лучших и недооцененных фильмов своего жанра. Он довольно сильно выбивается из тех сотен боевичков в дикозападном сеттинге, что вышли на свет в то время.
Дело в том, что это очень драматичное кино, что для жанровых лент чаще всего минус. Однако тут все настолько трагично и пессимистично, что даже поздний Иствуд курит в сторонке.
Мрачный визуал, шикарный саундтрек и частое предпочтение спокойной динамике только украшают реально классный сценарий, который по слухам частично писал Дарио Ардженто. Но по слухам тут и Леоне один эпизод режиссировал. В остальном же это абсолютно французское кино тонкой души, для которого подобрали популярный и внезапно удачный в плане сочетания сеттинг.
Лента начинается с задающей тон сцены, где на глазах главной героини вешают ее мужа, а ферму сжигают. Вдова в отчаянии обращается к одинокому стрелку с просьбой отомстить. Все это оборачивается в очень трагичный замес. И хотя сквозная линия бессмысленности мести может показаться банальной, это очень мощное кино, нехарактерное для жанра.
#плотнаябишечка
#spaghetti
Напарники / Vamos a matar, compañeros [1970] — Серджио Корбуччи
спагетти-вестерн | комедия
Корбуччи с течением времени остался в истории кинематографа в качестве одного из режиссеров спагетти-вестернов. Иными словами есть Леоне, а есть все остальные, включая Корбуччи. Это не совсем справедливо, потому что по части драматургии и действительно ярких и уникальных фильмов жанра (а это непросто) он совершенно ничем не уступает признанному маэстро. И если «Джанго» или «Наемник» вас в этом не убедили, то советую попробовать с «Напарниками».
Сюжет разворачивается традиционно во время очередной революции, но если часто в спагетти-вестернах этот сеттинг используется лишь чтобы накинуть претенциозного подтекста к довольно типовому сценарию, то здесь Корбуччи использует его на полную. Революция тут не просто фон, но и двигатель всего происходящего, практически главный герой.
Режиссер очень круто вырисовывает контраст между наивным крестьянином, попавшим в переплет (его играет Томас Миллиан), и расчётливым торговцем смертью (его играет естественно Франко Неро). Они вынуждены действовать сообща, пробиваясь через предательство и откровенно нелепые ситуации.
Идейно кино сильно близко к «Наемнику», но Корбуччи удалось еще круче сделать экшен, еще ярче драму и еще смешнее юмор. Фильм местами неплохо иронизирует над штампами жанра, а саундтрек, традиционно написанный Морриконе, только усиливает впечатления.
#плотнаябишечка
#spaghetti
Il mercenario / Наемник [1968] — Серджио Корбуччи
спагетти-вестерн
Корбуччи — легенда режиссуры спагетти-вестернов, Неро — легенда среди актеров спагетти-вестернов. Морриконе и Николаи — легенды композиторов для спагетти-вестернов. А потому стоит ли удивляться, что «Наемник» настолько хорош?
Будучи снятым на самом пике бесконечной штамповки пистолетно-шляпного кино в Италии, этот фильм сильно выделяется среди общей массы. Я очень люблю этот жанр и пересмотрел сотни его представителей, но отличить многие из них друг от друга весьма сложно, это скорее хорошее развлечение на вечер. Корбуччи же всегда удавалось добавить изюминку.
И речь не только про сатиру или какой-то социальный подтекст, но и про аудиовизуальный стиль. Недаром «Наемника» неоднократно цитировал Тарантино в своих лентах.
По сюжету герой Франко Неро перевозит серебро для богатых мужичков и попадает в эпицентр революции, предлагает бунтарям свои услуги и, конечно, же впечатляюще убивает злодеев. На антагонисте тут Джек Пэланс, тоже знаковая фигура.
По итогу все это работает как дико стильная, динамичная и местами смешная смесь, которую можно смело смотреть, даже если это не совсем ваш жанр
#плотнаябишечка
#spaghetti
Pesto Spaghetti
Ingredients for Pesto:
- 80g Fresh Basil
- 1 clove Garlic
- 30g Pine Nuts
- 60g Extra Virgin Olive Oil
- 2g Salt
- 40g Parmesan Cheese
Additional:
- Your choice of Spaghetti
- Extra Parmesan for garnish
Instructions:
1. In a blender or food processor, combine basil, garlic, pine nuts, salt, and parmesan.
2. Gradually add olive oil, blending until smooth.
3. Cook spaghetti in salted water according to package instructions.
4. Drain pasta, saving a bit of pasta water.
5. Toss spaghetti with pesto, adding pasta water if needed to thin the sauce.
6. Serve with extra parmesan for garnish.
#PestoSpaghetti#FreshBasil#Garlic#PineNuts#ExtraVirginOliveOil#Parmesan#Spaghetti#ItalianCuisine#PastaLovers#EasyRecipes#HomeCooking
@dishes