Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
РОССИЙСКИЙ РЫНОК АВТОБУСОВ
▫️Согласно данным аналитического агентства «АВТОСТАТ», в августе 2019 года объем российского рынка новых автобусов (без учета LCV) составил 1,2 тыс. единиц, что на 43,9% больше, чем в августе 2018 года.
▫️Лидерство в августе принадлежит по-прежнему отечественному производителю ПАЗ, на долю которого пришлось около 60% от общего объема.
▫️В количественном отношении это составляет 713 автобусов, что на 16,9% больше, чем год назад.
▫️Далее идут также отечественные LIAZ (113 шт.) и NEFAZ (109 шт.).
▫️Самой популярной моделью автобусного рынка в нашей стране в августе стал высокопольный автобус малого класса ПАЗ-3204 (343 шт.; +90,6%).
#лизинг
#leasing
#ДиректЛизинг
#директлизинг
#лизингмосква
#автобусвлизинг
#автобус
#busway
#moscow
#2019
УСПЕШНАЯ ОТГРУЗКА 🚌
▫️ЛК «Директ Лизинг» предоставила Автобусы ZHONG TONG LCK 6127 H COMPASS в лизинг на удобных условиях для Лизингополучателя:
▫️Аванс - 20%;
▫️Срок лизинга - 48 месяцев.
▫️Туристические автобусы особо большого класса Zhong Tong 6127 будут использоваться Лизингополучателем для перевозки российских и иностранных туристов.
▫️посадочных мест в автобусе: 53+1
мультимедиа;
▫️увеличенное пространство для ног;
▫️видеосистема с двумя мониторами;
▫️климат-контроль;
▫️VIP салон.
#лизинг
#leasing
#ДиректЛизинг
#директлизинг
#лизингмосква
#автобусвлизинг
#bus
#zhongtong6127
#zhongtong
#zhongtongbus
#busway
#moscow
#2019
УСПЕШНАЯ ОТГРУЗКА 🚌
▫️ЛК «Директ Лизинг» предоставила Автобусы ZHONG TONG LCK 6127 H COMPASS в лизинг на удобных условия для Лизингополучателя:
▫️Аванс - 20%;
▫️Срок лизинга - 36 месяцев.
▫️Туристические автобусы особо большого класса Zhong Tong 6127 будут использоваться Лизингополучателем для перевозки российских и иностранных туристов.
▫️Супер длинная база, комфортный салон, все 53 места имеют большое расстояние между сиденьями.
#лизинг
#leasing
#ДиректЛизинг
#директлизинг
#лизингмосква
#автобусвлизинг
#bus
#zhongtong6127
#zhongtong
#zhongtongbus
#busway
#moscow
#2019
УСПЕШНАЯ ОТГРУЗКА
▫️ЛК «Директ Лизинг» предоставила автобус ZHONG TONG LCK 6127 H COMPASS в лизинг на удобных условия для Лизингополучателя:
▫️Аванс - 20%;
▫️Срок лизинга - 48 месяцев.
▫️Туристический автобус особо большого класса Zhong Tong 6127 будет использоваться Лизингополучателем преимущественно на территории Москвы и Московской области для перевозки российских и иностранных туристов.
▫️Супер длинная база, комфортный салон, все 53 места имеют большое расстояние между сиденьями.
#лизинг
#leasing
#ДиректЛизинг
#директлизинг
#лизингмосква
#автобусвлизинг
#bus
#zhongtong6127
#zhongtong
#zhongtongbus
#busway
#moscow
#2019
УСПЕШНАЯ ОТГРУЗКА 🚌
📍В 1998 году с конвейера сошел полумиллионный автобус марки ПАЗ.
🔺В 2001 году сотрудники предприятия отмечали выпуск 100 000 автобуса модели ПАЗ-3205.
🔺ПАЗ-320530, проходит поэтапную модернизацию по повышению надежности, ресурса и потребительских характеристик автобуса.
🔺Автобусы получили новую переднюю маску со светотехникой. Комплектуется двигателями: ЯМЗ-534, ММЗ, ЗМЗ.
🔺Автобусы с дизельным двигателем оснащены моторным тормозом в базовой комплектации.
▫️УСЛОВИЯ ЛИЗИНГА:
▫️Аванс-20%;
▫️Срок лизинга-36 месяцев.
#лизинг
#leasing
#ДиректЛизинг
#директлизинг
#лизингмосква
#автобусвлизинг
#bus
#паз
#паз320530
#автобус
#busway
#moscow
#2019
АВТОБУСЫ В ЛИЗИНГ
▶️ЛК «Директ Лизинг» предоставила Автобусы ANKAI в лизинг:
➡️Аванс - 1️⃣0️⃣%;
➡️Срок лизинга - 4️⃣8️⃣месяцев.
🇨🇳Официальный дилер ANKAI готов предоставить клиентам широкий ассортимент продукции: городской #автобус, туристический автобус, автобусное шасси.
❗️Пассажирские автобусы марки ANKAI были специально спроектированы для комфортабельных перевозок пассажиров на большие расстояния.
❗️Комплектация разработана с учетом последних достижений индустрии автобусостроения и общепринятых стандартов качества.
🎎Высокий уровень комфорта в салонах автобусов обеспечивает:
♨️Климат-контроль, круизконтроль, кондиционер, кулер, тонировка стекол, мультимедиа.
#лизинг
#leasing
#ДиректЛизинг
#директлизинг
#лизингмосква
#автобусвлизинг
#busway
#moscow
#ankai
#chinabus
#bus
#китайскийавтобус
#2020
УСПЕШНАЯ ОТГРУЗКА 🚌
▫️ЛК «Директ Лизинг» предоставила Автобус ZHONG TONG LCK 6127 H COMPASS в лизинг:
▫️Аванс - 20%;
▫️Срок лизинга - 48 месяцев.
▫️Сочный Zhong Tong 6127 ComPass - не только невероятно комфортабельный, но и самый длинный в своём классе, а длина, как известно, имеет значение-почти 13 метров!
▫️Максимальное расстояние между сидениями;
▫️Огромное багажное отделение (10 кубов);
▫️Независимая подвеска, паромник, топливный бак 600 литров;
▫️Шикарное место водителя на пневмоподвеске и многое другое.
▫️Туристические автобусы особо большого класса Zhong Tong 6127 будут использоваться Лизингополучателем для перевозки российских и иностранных туристов.
#лизинг
#leasing
#ДиректЛизинг
#директлизинг
#лизингмосква
#автобусвлизинг
#bus
#zhongtong6127
#zhongtong
#zhongtongbus
#zhongtong6127compass
#busway
#алкдвестолицы
#moscow
#2019