Функция 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
Huffington Post: 8 «микропривычек», которые помогут вам жить более счастливой и здоровой жизнью
Микропривычки — это небольшие, но регулярные действия, способные существенно улучшить качество жизни. Внедрение таких привычек не требует значительных усилий, но приносит ощутимые результаты. Среди них: утреннее растяжение для бодрости, ежедневное чтение хотя бы нескольких страниц для умственного развития, благодарность за маленькие радости, что повышает настроение, и планирование дня для повышения продуктивности. Эти простые действия помогают сформировать позитивные изменения без лишнего напряжения.
«Маленькие шаги ведут к большим переменам».
https://theidealist.ru/8microhabs/
#Huffpost#человек#здоровье#привычки
Huffpost: 21 простая задача по самоорганизации, которую профессионалы выполняют каждый день
Даже самый загруженный день можно сделать чуть более организованным — достаточно выделить несколько минут на простые, но регулярные действия. В материале собраны 21 привычка, которые профессиональные организаторы выполняют ежедневно: от заправки кровати до разбора почты, от наведения порядка в ванной до обновления списка продуктов. Эти мини-задачи не требуют много времени, но помогают держать пространство под контролем и создают ощущение спокойствия.
«Ощущение выполненного долга действительно приятно!»
https://theidealist.ru/21simple/
#Huffpost#человек#порядок#саморазвитие
Huffpost: что замечают дети из того, что не видят взрослые
Дети видят больше, чем нам кажется. Они замечают не только то, что мы говорим им напрямую, но и наш тон, мимику, поведение по отношению к партнёрам, к себе и к окружающим. Они чутко улавливают, как мы относимся к своему телу, какие ценности действительно исповедуем, и насколько мы строги к себе в моменты неудач. Эти наблюдения формируют у них отношение к миру, к себе и к людям.
«Ваши дети вырастут с чётким пониманием того, что на самом деле ценят их родители».
https://theidealist.ru/kidsseeit/
#Huffpost#общество#дети#воспитание
Huffington Post: 6 самых ярких пассивно-агрессивных фраз, которые вы наверняка используете (и зря)
Пассивно-агрессивное поведение – это скрытый способ выражения недовольства, который разрушает отношения и создаёт напряжённую атмосферу. Незаметные уколы, затягивание дел, сарказм – всё это признаки того, что человек избегает конфликта, но всё же стремится выразить свой гнев. Почему так происходит? Как вовремя распознать и нейтрализовать пассивную агрессию в общении?
«Хотя все мы время от времени проявляем пассивно-агрессивное поведение, этот тип общения, как правило, более привычен для людей, избегающих конфликтов, а также для тех, кто не имеет чувства собственного достоинства».
https://theidealist.ru/passiveagrr/
#HuffPost#человек#психология#общение#агрессия
Huffpost: в чем разница между джинсами за 50 и 500 долларов?
Джинсы стали не просто одеждой, а культурным символом, который сопровождает человечество уже почти два века. В статье рассказывается, как рабочая униформа американских шахтёров и фермеров превратилась в мировой модный тренд, а затем и в универсальную вещь, которую носят все — независимо от пола, возраста и социального статуса. За этим успехом стоит история практичности, инноваций (например, заклёпки и особая ткань деним) и умения подстраиваться под запросы каждой новой эпохи.
«Джинсы всегда были одеждой для настоящей жизни»
https://theidealist.ru/jeans/
#Huffpost#общество#одежда#мода#лайфхак
Huffington Post: 6 фраз, которые взрослые дети хотят услышать от своих родителей
Детство - одна из определяющих частей нашей жизни. Психологам хорошо известно, что многие наши психологические проблемы, в том числе в семейных отношениях, берут свое начало именно оттуда. А более важных людей в детстве чем родители для нас нет. И иногда они в желании защитить неосознанно наносят своему ребенку вред, с последствиями которого ему приходится бороться десятилетия спустя.
«Психотерапевт Недра Гловер Тавваб, автор книги «Установить границы, обрести мир», в начале этого года опубликовала в своем Instagram пост под названием «То, что взрослые дети хотят услышать» в котором перечислила несколько простых, но действенных фраз, которые родители могут сказать своим взрослым детям».
https://theidealist.ru/6phrases/
#HuffPost#человек#семья#родители#психология#детство