Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
В феврале рынок электромобилей с пробегом показал прирост продаж
На фоне спада продаж в сегменте бензиновых и дизельных авто с пробегом продажи подержанных электромобилей выросли в феврале 2025 года на 16% год к году (с 782 до 909 ед.), а продажи б/у гибридов увеличились на 11% (с 5033 до 5588 ед.). На это указывают данные статистики «Автостат Инфо».
Эксперты отмечают, что за первые два месяца этого года в России было продано 1898 подержанных «электричек», что на 41% превысило прошлогодний показатель (1347 ед.).
Февральский рейтинг подержанных электромобилей возглавила марка Nissan, показавшая рост к февралю прошлого года на 3% (с 283 до 292 ед.). На второе место вырвался Zeekr с перерегистрациями в размере 149 ед., что на 166% выше результата за февраль 2024 года. Tesla, наоборот, продемонстрировала 24-процентный спад и смогла выйти на третье место (110 авто). В топ-5 за февраль 2025 года вошли Evolute и Volkswagen — по 40 проданных «электричек» с пробегом.
Среди моделей на рынке электромобилей с пробегом лидерство удерживает Nissan Leaf, показавший в феврале прирост на 5% в годовом сравнении (с 275 до 288 ед.). Продемонстрировав рост перерегистраций на 120%, второе место занял Zeekr 001 (всего 99 авто). Третье место у Tesla Model 3 — продан 51 такой электромобиль с пробегом, что на 20% ниже уровня прошлого года. Модельный топ-5 дополнили Hyundai Kona и Evolute I-Pro — 32 и 31 ед. соответственно (+7% и +288%).
Добавим, что продажи б/у авто в сегменте бензиновых машин упали в феврале 2025 года по сравнению с аналогичным периодом прошлого года на 6% (с 396 025 до 373 454 ед. авто). Перерегистрации дизельных легковушек снизились на 18% (с 22 917 до 18 825 ед.). В то же время сегмент гибридных авто с пробегом показал 11-процентный прирост (показатели выросли с 5033 до 5588 ед.).
#автостатинфо#автоновости#электромобили#nissanleaf
Подписка на Автостат Инфо
Еще больше информации в отчетах
Для связи
❗️Продажи электромобилей с пробегом выросли на 8% за первое полугодие
По данным «Автостат Инфо», в России за первое полугодие 2024 года было продано 5807 «чистых» электромобилей с пробегом — на 8% больше, чем годом ранее (5390 ед.). Однако в июне, как отмечают аналитики, перерегистрации такого типа машин сократились на 5% в годовом сравнении, с 1098 до 1033 ед.
Модель Nisan Leaf — самый продаваемый электромобиль с пробегом на российском авторынке. В июне было реализовано 373 таких машин, что 37% меньше, чем годом ранее (595 ед.). Эта же модель лидирует по перерегистрациям на рынке электрокаров и по итогам первого полугодия: 1966 ед. против 2909 ед., перепроданных за тот же период 2023-го (-32%).
Второе место в июньском рейтинге с большим отставанием от лидера занимает Tesla 3 — 90 проданных авто, что на 5% больше прошлогоднего значения (86 машин). За январь-июнь 2023 года перерегистрации у Tesla 3 выросли на 8% к прошлому году, с 511 до 554 ед.
Китайская модель Zeekr 001 вошла в топ-3 рынка электромобилей с пробегом. В июне перерегистрации модели выросли в сравнении с прошлым годом с 6 до 78 ед., а продажи за первое полугодие текущего года составили 358 ед. против 23 ед., перерегистрированных за тот же период 2023 года.
Отметим, что продажи гибридных автомобилей с пробегом сократились в июне на 40% (с 10 762 до 648 ед.), а за январь-июнь уменьшились на 34% (с 55 464 до 36 531 авто). Показатели реализации в сегменте бензиновых авто с пробегом сократились менее заметно: на 9% в июне и на 5% за первое полугодие. Перерегистрации дизельных машин в июне упали в годовом сравнении на 22%, а за январь-июнь — на 16%.
#автостатинфо#электромобили#nissanleaf#автоновости
Подписка на Автостат Инфо
Еще больше информации в отчетах
Для связи
🌍⚡️Norway Sets World Record for Electric Car Sales!🚗💨
In August, electric vehicles captured an astonishing 94.3% of the market! That's 10,500 units sold! 🎉
Leading the charge is the Tesla Model S, accounting for 18.8% of sales! 🥇 Following closely are the Hyundai Kona and Nissan Leaf! 🥈🥉
Norway continues to pave the way for a sustainable future! 🌱✨
#ElectricVehicles#Norway#Sustainability#Tesla#HyundaiKona#NissanLeaf#Auto