Функция 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
Перевёл для вас один из моих любимых подкаст-моментов: Бобби Ли пришёл в гости на подкаст Тео Вона и в какой-то момент сорвался на Тео, потому что тот в тысячный раз перепутал его с китайцем.
#theovon
AAASUBS представляет:
Theo Von — 30lb Bag of Hamster Bones (2017)
Тео Вон, он же Теодор Капитани фон Курнатовски III — человек непростой судьбы. Это сейчас он известен как один из самых известных подкастеров/стендаперов планеты, бравший интервью у Трампа, Тимоти Шаламе, Цукерберга и прочих, но в детстве Тео рос в нищете, имел престарелого отца, умершего в 84, когда Тео было всего 16, а за два года до этого Тео получил легальную независимость от своих опекунов.
Кстати, забавный факт: Тео — потомственный шляхтич, в его роду были польские дворяне, может быть поэтому в итоге королевская кровь дала о себе знать, и Тео таки проснулся знаменитым... хотя, это я всё шучу, конечно. Свою славу Тео целиком и полностью выстроил сам: в нулевых он много лет участвовал в различных реалити-шоу, после пару лет побывал ведущим различных шоу, параллельно развивая при этом свою стендап-карьеру, выпустив свой первый спешл для Netflix в 2016 году. Ну а в этом же году он начал выпускать его уже легендарный подкаст This Past Weekend, который уже впоследствии запустил известность Тео Вона в стратосферу.
Я же озвучил для вас его стендап-альбом, вышедший уже после его дебютного спешла — "12 килограмм Хомячьих Костей". В нём Тео рассказывает о своём детстве: как его заставляли ловить сбежавших из научного центра макак, как он заставлял котов пытаться заняться друг с другом сексом, а также рассказывает о своей первой работе, где он торговал татуированными хомяками на рэйвах.
Озвучено по заказу Владимира Синицына.
#theovon@aaasubs
#albums@aaasubs
#aaadubs@aaasubs
AAASUBS представляет:
Theo Von — 30lb Bag of Hamster Bones (2017)
Тео Вон, он же Теодор Капитани фон Курнатовски III — человек непростой судьбы. Это сейчас он известен как один из самых известных подкастеров/стендаперов планеты, бравший интервью у Трампа, Тимоти Шаламе, Цукерберга и прочих, но в детстве Тео рос в нищете, имел престарелого отца, умершего в 84, когда Тео было всего 16, а за два года до этого Тео получил легальную независимость от своих опекунов.
Кстати, забавный факт: Тео — потомственный шляхтич, в его роду были польские дворяне, может быть поэтому в итоге королевская кровь дала о себе знать, и Тео таки проснулся знаменитым... хотя, это я всё шучу, конечно. Свою славу Тео целиком и полностью выстроил сам: в нулевых он много лет участвовал в различных реалити-шоу, после пару лет побывал ведущим различных шоу, параллельно развивая при этом свою стендап-карьеру, выпустив свой первый спешл для Netflix в 2016 году. Ну а в этом же году он начал выпускать его уже легендарный подкаст This Past Weekend, который уже впоследствии запустил известность Тео Вона в стратосферу.
Я же озвучил для вас его стендап-альбом, вышедший уже после его дебютного спешла — "12 килограмм Хомячьих Костей". В нём Тео рассказывает о своём детстве: как его заставляли ловить сбежавших из научного центра макак, как он заставлял котов пытаться заняться друг с другом сексом, а также рассказывает о своей первой работе, где он торговал татуированными хомяками на рэйвах. Полную версию можете послушать на Бусти прямо сейчас, а в общий доступ выкладываю пока все биты про хомячков, начиная с того самого, от которого пошло название этого замечательного альбома.
Полную версию выложу в общий доступ 1 декабря.
Озвучено по заказу Владимира Синицына.
PS Не переживайте, Брайан Риган также в работе, очень уж кропотливый релиз, но уже скоро я и его закончу, спасибо всем бустерам за терпение!
#theovon@aaasubs
#albums@aaasubs
#aaadubs@aaasubs