Функция 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
#Warning
The Tashkent City Department of Internal Affairs warns!
Cruel treatment of animals entails liability as established by law.
☘️Read the latest environmental news on the @ekologuz page. Follow us and send your suggestions and wishes via @eklguz_bot
Instagram | Facebook | Twitter | Sayt | Youtube.
#Warning
If you get any random zip file from a random person on TG, Make sure to check it's update-binary/updater script.
If it looks something similar to this, DON'T FLASH IT AT ALL!
⚠️ Breaking News on BTC! 📉
The "Pi Cycle" indicator is now turning downward. There's plenty of room for the indicator to drop further, which could spell trouble for BTC.
Stay tuned for our in-depth presentation on what this means for the crypto market and your investments.
#BTC#crypto#warning
⚠️🇺🇸#кредиты#сша#warning
и еще одни гиганты ограничивают вывод средств из своих кредитных фондов (private credit funds) на фоне сильных оттоков
Apollo
Ares Management
mt в max
👽#нло#рынки#warning
Британия должна подготовиться к финансовому кризису, который может возникнуть, если правительство США объявит о существовании инопланетян. Финансовые рынки могут рухнуть — бывший аналитик из ЦБ Англии разослала письма управляющим Банка Англии с предупреждениями
BANK OF ENGLAND MUST PLAN FOR A FINANCIAL CRISIS TRIGGERED BY ALIENS
——————————-
Трамп в этом году объявит о первом контакте человечества с инопланетянами, что станет «самым важным заявлением в истории» - утверждает британский документалист Марк Кристофер Ли
В конце декабря 2025г британская Daily Star со ссылкой на интерпретации экспертов писала, что предсказания Бабы Ванги не исключают, что поздней осенью 2026г человечество может ожидать встреча с инопланетянами
mt в max
⚠️🌎#экономика#восток#warning
Goldman: затягивание конфликта с Ираном грозит экономикам Персидского залива таким как экономикам Катара, Кувейта, Саудовской Аравии и ОАЭ серьезным спадом, который для некоторых станет худшим с 1990-х гг
mt в max
⚠️🇺🇸#акции#сша#warning
Berkshire Hathaway (#BRK) провела годовое собрание акционеров:
Грег Абель, новый CEO Berkshire заявил, что хоть ИИ и горячая на данный момент тема, Berkshire не будет "заниматься ИИ ради ИИ"
Уоррен Баффет, председатель сд компании, заявил, что рынки сейчас похожи на казино, а инвесторы еще никогда не были настолько по-лудомански настроены ...
Объем налички на балансе Berkshire опять обновил рекорд (уже $397.4 млрд) - компания продолжает воздерживаться от новых крупных покупок т.к. считает рынок дорогим...
Berkshire продолжает продавать акции...
Пузырь ИИ есть, но мы то знаем, что сдуть его очень тяжело…