Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для URL, имени файла, имени объекта в каком-то софте и тд. Требования совместимости простые: в тексте должны быть только допустимые символы. Обычно это a-z, 0-9 и "_" или "-". То есть, только прописные буквы латинского алфавита и цифры (как пример).
Допустим, нам нужно название статьи в блоге преобразовать в slug для добавления его в URL этой статьи. Как это лучше всего сделать?
В Django по умолчанию есть готовая функция slugify для таких случаев.
Но я её никогда не использую. Почему? Потому что её недостаточно!
Приведём пример
>>> from django.utils.text import slugify
>>> slugify('This is a Title')
'this-is-a-title'
Пока всё отлично
>>> slugify('This is a "Title!"')
'this-is-a-title'
Спец символы удалились, всё хорошо.
>>> slugify('Это заголовок статьи')
''
Вот и приехали 😢. Если текст не английский то буквы просто игнорируются. Можно это поправить
>>> slugify('Это заголовок статьи', allow_unicode=True)
'это-заголовок-статьи'
Но тогда мы не вписываемся в условие. У нас появилась кириллица в тексте.
Так как я часто пишу сайты для русскоязычных пользователей эта проблема весьма актуальна. Я не использую стандартную функцию и всегда пишу свою.
Оригинал я не беру в расчёт и пишу полностью свою функцию. И так, по порядку:
🔸1. Исходный текст:
>>> text = 'Мой заголовок №10 😁!'
Взял специально посложней со специальными символами.
🔸2. Транслит
Необходимо сделать транслит всех символов в латиницу. Здесь очень выручает библиотека unidecode. Помимо простого транслита кириллицы в латиницу она умеет преобразовывать спец символы и иероглифы в текстовые аналоги.
from unidecode import unidecode
>>> unidecode("Ñ Σ ® µ ¶ ¼ 月 山")
'N S (r) u P 1/4 Yue Shan'
Очень крутая библиотека, советую👍
В нашем случае получаем такое преобразование:
>>> text = unidecode(text)
>>> print(text)
'Moi zagolovok No. 10 !'
Отличный транслит. Смайл просто удалился, хотя я ждал что-то вроде :). Ну и ладно, всë равно невалидные символы.
А еще наш код уже поддерживает любой язык, будь то хинди или корейский.
🔸4. Фильтр символов
Unidecode не занимается фильтрацией по недопустимым символам. Это мы делаем в следующем шаге через regex. Просто заменим все символы на "_" если они вне указанного диапазона.
>>> text = re.sub(r'[^a-zA-Z0-9]+', '_', text)
>>> print(text)
'Moi_zagolovok_No_10_'
Символ "+" в паттерне выручает когда несколько недопустимых символов идут рядом. Все они заменяются на один символ "_".
🔸5. Slugify
Осталось удалить лишние символы по краям и сделать нижний регистр
>>> text = text.strip('_').lower()
>>> print(text)
'moi_zagolovok_no_10'
Получаем отличный slug! 😎
🌎 Полный код в виде функции.
______________
PS. Проверку что в строке остался хоть один допустимый символ я бы вынес в отдельную функцию.
#libs#tricks#django
💥Llavero Moto para KTM Duke
Regalo ideal para amantes de las motos en temporada de invierno
✅OFERTA: 14.86€
❌ Antes: 23.99€
💰Ahorras un 38%🔥
Diseño elegante en fibra de carbono y cuero PU para destacar tu pasión por las m
👉 Hazte con él y personaliza tus llaves ahora
#rebajas#llavero#ktm#motos#fibradecarbono
🛰️Oferta publicada en Coche y Moto
💥KTM Brabus 1400R 2025 – легендарная мощь в новом исполнении ‼️
✏️ Готовьтесь к адреналину! KTM и тюнинг-ателье Brabus представляют новую версию флагманского спортбайка – KTM Brabus 1400R 2025. Это не просто мотоцикл – это заявление о превосходстве, сочетающее в себе немецкую инженерную мысль и австрийскую страсть к скорости.
🔥 Сердце зверя
- 1400-кубовый V-образный твин с доработанной системой впуска и выхлопа – запас мощности свыше 180 л.с. и чудовищный крутящий момент.
- Усиленная рама и переработанная подвеска – для идеальной управляемости как на треке, так и на шоссе.
- Облегченная конструкция – широкое применение карбона и алюминиевых сплавов.
🎨 Эксклюзивный дизайн от Brabus
- Агрессивные обтекатели с увеличенными воздухозаборниками.
- Уникальная расцветка "Shadow Grey" с фирменными акцентами Brabus.
- Кованые колесные диски и титановая выхлопная система.
⚡ Технологии будущего
- Полностью цифровая приборная панель с поддержкой навигации и телеметрии.
- Адаптивная электроника: трековые режимы, антивиллинг, регулируемый контроль тяги.
- Опциональный пакет "Track Pro" с системой быстрого переключения передач и гоночной ABS.
💰 Цена и доступность
Официальные продажи стартуют в начале 2025 года, ожидаемая цена – от €35 000. Количество экземпляров будет ограничено – типичный для Brabus подход к эксклюзивности.
Ваши мысли? Стоит ли такая цена невероятных эмоций, которые обещает этот монстр? 💀🔥
#KTM#Brabus#Мотоциклы2025#Спортбайк#Эксклюзив
💥 KTM 450 RC: Новый спортбайк с двумя цилиндрами и 56 л.с. стартует в Китае‼️
✏️ Австрийский бренд, находящийся под новым руководством Bajaj, сделал неожиданный ход – официально представлен спортбайк KTM 450 RC. И это не просто обновление, а абсолютно новая модель с рядным двухцилиндровым двигателем!
🔥 Почему это важно?
Раньше руководство KTM отказывалось от идеи 450-кубового «параллельного» Twins, но после смены владельца проект не только вернули, но и запустили в серию. Правда, пока только для китайского рынка.
📊 Технический профиль:
· Двигатель: 449 см³, рядный 2-цилиндровый (270° кривошип)
· Мощность: 41 кВт (56 л.с.) – это на 4 л.с. больше, чем у донорской CFMoto 450 SR-S
· Максималка: 195 км/ч
· Вес: 168 кг (на 3 кг легче китайского аналога)
· Ходовая: Стальная решетчатая рама + алюминиевый односторонний маятник
· Подвески: Полностью регулируемые WP (вилка + моноамортизатор) + рулевой демпфер
· Тормоза: Радиальная 4-поршневая скоба WP Braking, 320 мм диск, Bosch ABS с функцией в поворотах
🎯 Что особенного?
· Эргономика: Агрессивная посадка с низкими клип-онами и высокими подножками – явно под трек.
· Электроника: Ride-by-wire, трекшн-контроль, квикшифтер, круиз-контроль, TFT-дисплей.
· Дизайн: Обтекатель с «крылышками» в стиле старшей модели KTM 990 RC R.
💸 Цена и перспективы в Европе
💵 Стоимость в Китае – 34 999 юаней (~4 400 евро). Старт продаж – апрель 2026 года.
➡️ Что думаете? Ждать KTM 450 RC на нашем рынке или это «китайский эксклюзив»?
#KTM#KTM450RC#НовыйСпортбайк#CFMoto#MotorcyclesNews#ДвухцилиндровыйKTM
💥 KTM Rescue: как Pierer Mobility готовится к 2025 году?
✏️ Компания Pierer Mobility Group — мощный игрок на моторынке, владеющий легендарными брендами KTM 🟠, Husqvarna ⚪ и GasGas 🔴 — анонсировала грядущие изменения в своей стратегии под кодовым названием «KTM Rescue».
🔧 Что за планы?
- 📢 Новые модели 2025 – ожидается обновление линеек эндуро🏁, супермото💨 и дорожных мотоциклов🛣️.
- ⚡ Ускорение в электробайках – развитие E-моделей, возможно, с новыми технологиями батарей и увеличенным запасом хода.
- 🌱 Экология + мощность – Pierer Mobility делает ставку на устойчивое развитие, не жертвуя динамикой и адреналином.
💡 Почему «Rescue»?
Название намекает на «спасение» позиций KTM в условиях растущей конкуренции и ужесточения экологических норм. Компания хочет укрепить лидерство в off-road сегменте и активнее продвигать уличные модели.
🔥 Чего ждать?
- KTM – возможно, новое поколение EXC/EX-F или даже хайповый E-адвенчур.
- Husqvarna – свежие Vitpilen/Svartpilen или прорыв в электромотоциклах.
- GasGas – усиление позиций в мотокроссе и супермото.
🔜 Будем следить за новостями! Готовьтесь к 2025 году — Pierer Mobility приготовил сюрпризы! 💥
#KTM#Husqvarna#GasGas#PiererMobility#Мото2025#Эндуро#Супермото#ЭлектроБайк#Мотокросс#НовыеМодели
💥 KTM 450 RALLY REPLICA: ГОТОВЬТЕСЬ К БЕЗДОРОЖЬЮ! БАЙК ДАНИЭЛЯ САНДЕРСА ВЫХОДИТ В ПРОДАЖУ!
✏️ Мотоцикл, на котором Даниэль Сандерс штурмует подиумы ралли-рейдов (включая Дакар!), теперь доступен и вам! KTM только что представила долгожданную 450 Rally Replica 2025 года. Это не просто мотоцикл — это чистокровная гоночная машина для бездорожья, адаптированная для эндуро-ралли.
🔥 Главные фишки байка:
1. Сердце чемпиона: Тот же мощный 450-кубовый SOHC двигатель, что и на заводской раллийной машине Сандерса. Облегченные компоненты (поршень, шатун), полый распредвал, титановые клапаны и их пружины — все для максимальной мощности и надежности в экстремальных условиях.
2. Заводская ходовая: Полностью карбоновая рама и задняя подвеска напрямую от гоночного прототипа! Легкость и прочность на новом уровне.
3. Высокотехнологичная подвеска: Передняя вилка WP XACT PRO 7548 и задний амортизатор WP XACT PRO 6748 с ручной настройкой сжатия/отбоя — полный контроль на любом рельефе.
4. Эксклюзивная комплектация:
* Заводские кевларовые бензобаки** (большой 31,5л + два малых по 7,5л) для огромного запаса хода.
* Карбоновые защитные элементы (крылья, защита руля, радиаторов).
* Легкосплавные колесные диски DID DirtStar с бескамерными покрышками Michelin Desert Race.
* Специальное сиденье Rally для комфорта на марафонских спецучастках.
* Датчик нейтрали (единственная "уступка" дорожной регистрации, легко снимается для гонок).
* Светодиодная фара (редкость для чисто раллийного байка!).
5. Внешний вид: Агрессивный дизайн в фирменных цветах KTM Factory Racing и личной графике Даниэля Сандерса. Выделяться будете не только скоростью!
💵 Цена и Доступность:
* Цена пока не объявлена (ожидайте премиальный сегмент).
* Производство ОЧЕНЬ ограничено (как и у предыдущих релизов).
* Старт продаж — июнь 2025 года.
#KTM#KTMRally#450Rally#ДаниэльСандерс#DakarRally#RallyReplica#Эндуро#РаллиРейд#Бездорожье#Мотоновинка2025#AdventureBike#HardEnduro#Мотоспорт#Экстрим