Функция 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
🚗 Exciting news for crossover lovers! The electric Porsche Macan received new modifications:
🔋 Introducing the base single-motor version. Powered by a single rear axle motor, it delivers up to 360 hp and 563 Nm.
💨 Another newcomer is the Porsche Macan 4S. With two motors producing up to 516 hp and 820 Nm, you can accelerate from 0 to 100 km/h in just 4.1 seconds!
🛣️ Alongside the new powertrains for the electric Macan, there's the Off-road Design package enhancing off-road capabilities. It includes new bumpers, side skirts, and a revised air suspension controller, boosting ground clearance by an extra 10 mm.
#PorscheMacan#ElectricVehicle#NewModel#OffRoadDesign#Performance#Cars🏞️
💥Встречайте НОВИНКУ 2025: BMW F450GS! 🔥 Больше мощности, меньше веса, новая платформа! Всё, что нужно знать!
✏️ Приготовьтесь к новой эре средних эндуро от BMW Motorrad! 👀 Представляем долгожданный BMW F450GS 2025 – совершенно новую модель, пришедшую на смену легендарной F850GS в этом классе!
📍Что СОВЕРШЕННО НОВОЕ? Это не просто апдейт!
* Новая Разработка с Нуля: F450GS построена на абсолютно новой платформе, не связанной напрямую с предыдущей F850GS. 🔄
* Сердце Мотоцикла: Установлен НОВЫЙ двигатель – 450-кубовый жидкостного охлаждения параллельный твин с DOHC и 270-градусным коленвалом. ⚙️💨
* Больше Мощности: Ожидается значительный прирост мощности по сравнению со старым 850-кубовым мотором (точные цифры пока уточняются, но прогнозы оптимистичны! 💪).
* Современные Технологии: Инжектор, вероятно, с продвинутыми системами впрыска и управления.
* На Диете! 🏋️♂️💨: Одна из главных целей – радикальное снижение веса. Новая платформа и двигатель позволили сделать мотоцикл НАМНОГО легче предшественника. Ожидайте более проворную и управляемую машину! 🤸♂️
* Шасси: Новая стальная рама, разработанная специально под этот двигатель и задачи модели. Вероятно, улучшенная геометрия для лучшего внедорожного потенциала.
⚡Ключевые Особенности и Оборудование (Ожидаемые/Подтвержденные):
* Электронные Помощники: Полноценная современная электронная начинка: несколько режимов езды (Riding Modes), противобуксовочная система (ASC), ABS (возможно, с отключением для заднего колеса для бездорожья), и, возможно, даже контроль тяги (TC). 🧠⚡
* Связь и Дисплей: Большой цветной TFT-дисплей с возможностью подключения смартфона через BMW Motorrad Connected (навигация, музыка, звонки). 📱✨
* Подвеска: Качественная длинноходная подвеска спереди (перевернутая вилка) и сзади (моноамортизатор) с регулировками для адаптации под дорогу и бездорожье. 🛣️➡️🌲
* Тормоза: Мощные дисковые тормоза (вероятно, Brembo Stylema или аналоги) для уверенного замедления в любых условиях. 🛑✋
* Внедорожный Фокус: Улучшенный дорожный просвет (клиренс), защита двигателя (краш-барсы), внедорожные шины в базе или как опция. ⛰️
* Эргономика: Регулируемое ветровое стекло, удобное сиденье, продуманное расположение органов управления. 👍
🎯Позиционирование:
* F450GS позиционируется как истинно внедорожный (hard enduro) мотоцикл в линейке GS, более ориентированный на серьезное бездорожье, чем F850GS, но сохраняющий комфорт для асфальта. Идеальный выбор для тех, кто хочет покорять самые сложные маршруты без компромиссов. 🌍🗺️
* Это стратегический ответ BMW на растущую конкуренцию в сегменте средних внедорожников (KTM 450/500 EXC-F, Husqvarna FE 450/501, Honda CRF450RL).
🚀Вывод:
BMW F450GS 2025 – это не эволюция, а революция! 💥 С абсолютно новым двигателем, облегченной платформой, современной электроникой и явным внедорожным уклоном, она готова перевернуть представление о средних GS. Это мотоцикл для истинных искателей приключений, ценящих мощность, управляемость и готовность к любым вызовам! 🤘
#BMW#BMWMotorrad#F450GS#F450GS2025#AllTerrain#Enduro#AdventureBike#NewModel#Motorcycle#MotoNews#Adventure#Offroad#GS#ГрязьНеПомеха#Мото2025#Новинка#МотоциклМечты