Функция 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
Dikmen Gürün & Erdal Birkan — Turkish Folktales (Folkways Records, 1965)
#fairytale#Turkey
В 1964 году Дикмен Гюрюн и Эрдал Биркан записали для Folkways Records две турецкие народные сказки.
Первая сказка называется «Золотой подсвешник». Это вариация на классический сюжет о Золушке (510A в каталоге сказочных сюжетов Аарне–Томпсона–Утера). Однако в этой версии отец героини решает жениться не на ком-нибудь, а на собственной дочери. Не желая принять участие в кровосмесительной связи, девушка прячется в золотом подсвешнике. После недолгих поисков отец раскаивается в грешном желании и становится дервишем, а подсвешник попадает к сыну падишаха, который влюбляется в девушку и женится на ней. Попутно шехзаде поджаривает на вертеле свою двоюродную сестру, мешавшую влюблённым.
Вторая сказка — «Безумный Мехмет и три священника» — вариация на более редкий сюжет «Три утонувших горбуна» (1536B в том же каталоге). В классической версии хозяйка таверны случайно убивает трёх горбатых братьев. Чтобы скрыть убийство, она нанимает пьяницу сбросить первое тело в реку. Пока тот ходит, она выкладывает у двери второе и третье тело. Пьяница решает, что мертвец всё время возвращается, и каждый раз по новой его топит. В конце концов пьяница встречает на улице горбатого мужа хозяйки — и тоже отправляет его к праотцам.
Сюжет «Безумного Мехмета» отличается тем, что вместо горбунов — христианские священники, которые часто становились предметом шуток в османских сказках; вместо хозяйки — купец, к чьей жене они приставали; а вместо четвёртого горбуна, по всему видимому, сам Ходжа Насреддин. Ходжа Насреддин, конечно, к священникам отношения не имеет, но какая восточная шуточная сказка без него?
🔗Spotify | AppleMusic | Telegram
Татарские сказки об Убырлы Карчык: Две стороны одной сущности
Друзья, мы рады поделиться с вами записью татарских сказок об Убырлы Карчык — загадочном персонаже татарской мифологии, который может быть как зловещим, так и справедливым.
📖В первой сказке Убырлы Карчык предстаёт перед нами как классический отрицательный герой, чей образ связан с тёмными силами, и победа над ней становится испытанием для главных героев.
✨Во второй сказке всё иначе: Убырлы Карчык помогает восстановить справедливость, наказывая жадных и жестоких, а добрых и честных вознаграждая. Здесь она — не просто злой дух, а могущественная сила, балансирующая между мирами.
Почему мы выбрали именно эти сказки? Чтобы показать, насколько многогранна татарская мифология! Один и тот же персонаж может быть и воплощением зла, и инструментом правды — всё зависит от контекста и морали истории.
📜Тексты сказок приведены по сборнику«Татар халык әкиятләре» (составители: Замалетдинов, Салахов, Татарстан китап нәшрияты, 2021). При переводе на русский и английский пришлось поломать голову над передачей культурных реалий — но мы постарались сохранить дух оригинала!
🎧 Уже в эфире Apple Podcasts — следите за обновлениями!
#сказка#әкият#fairytale#УбырлыКарчык
🔮 Сказка "Шурале" Габдуллы Тукая
Наш великий поэт создал удивительно поэтичную версию народной сказки о лесном духе Шурале, который пугает путников в дремучих лесах. В этом произведении смекалка побеждает злые чары, а народная мудрость оживает в ярких образах.
Предлагаем вам послушать сказку на трёх языках: оригинал на татарском, в переводе на русский (Равиль Бухараев), в переводе на английский (Ляля Гильманова).
🎧 Погружайтесь в мир татарского фольклора и литературы!
Слушать на Podcasts
#сказка#fairytale#әкият#Шурале
Помните Бичуру? Иногда она помогает… но не в этой сказке! Героине этой коротенькой сказки пришлось проявить смекалку, чтобы перехитрить своенравную Бичуру.
Как ей удалось это сделать? Слушайте в новой сказке!
#сказка#fairytale#әкият#Бичура
🔍Навигация по каналу
Нас стало больше, как и материала. Для удобства добавили навигацию.
Здесь мы:
🟢 Рассказываем о проекте и нашей команде: #знакомство
🟢 Знакомим с персонажами татарской мифологии: #персонажи
#СуАнасы#Бичура#УбырлыКарчык#Убыр#Тенгри#Шурале#Киреметь#Зухра#Албасты#ЙортИясе#УрманИясе#Зилант#Аждаха#Ия#Юха#АкЕлан#КараЕлан#Тулпар#Аргамак#АкБүре
🟢 Записываем подкасты на татарском, русском и английских языках: #подкаст#podcast
🟢 Рассказываем сказки на 3х языках: #әкият#сказка#fairytale
🟢 Разбираем интересную лексику: #сүзлек#vocab#словарь
🟢 Рассказываем о литературе про мифологию: #китаплар#книги
🟢 Исследуем актуальную тему и готовим подробный материал: #лонгрид
🟢 Рассказываем о праздниках, обрядах, правилах поведения: #традиции
🟢 Наслаждаемся актуальной татарской музыкой: #плейлист
🟢 Ведем беседу с интересными гостями: #интервью
🟢 Размещаем локации интересных мест: #локации
🟢 Делимся новостями нашего проекта: #анонс
❔По вопросам и предложениям пишите @kamilamirasova