Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
В России стартовали продажи пикапа Foton Tunland G9, похожего на Ford F-150
На российском рынке появился в продаже Foton Tunland G9. Флагманский рамный пикап в единственной комплектации Premium оценивается в 3 640 000 рублей.
Foton Tunland G9, дизайн экстерьера которого навевает ассоциации с Ford F-150, относится к классу среднеразмерных пикапов. Его длина составляет 5340 мм, ширина — 1980 мм, высота — 1920 мм, а колёсная база — 3110 мм. Размеры внутренней грузовой платформы — 1520х1580х440 мм соответственно. Пикап может буксировать прицеп весом до 3 тонн.
В движение G9 приводит 2.0-литровый турбодизель (162 л.с. и 388 Нм), работающий с 8-диапазонным «автоматом». Привод полный с муфтой на передней оси и блокировкой заднего дифференциала.
В список оснащения модели вошли 6 подушек безопасности (фронтальные, боковые и шторки), задние парктроники, а также ассистенты помощи при экстренном торможении, удержания на подъёме и спуске со склона, предупреждения о столкновении со встречным автомобилем и пешеходами.
В салоне установлены 12,3-дюймовая цифровая панель приборов и центральный экран того же размера. Из опций комфорта перечислены амбиентная подсветка, климат-контроль и аудиосистема с 6 динамиками. У водительского кресла есть функция вентиляции, у обоих передних сидений — подогрев. За доплату доступны светодиодные фары и передние парктроники.
Источник: auto.ru/mag/article/rossii-nachalis-prodazhi-ramnogo-pikapa-foton-tunland-g9-pohozhego-na-ford-f150/
#RCINews#Foton
В России показали новый фургон Foton View
Компания «МБ Рус» - дистрибьютор бренда #Foton на российском рынке, представила новый фургон под названием View. Модель планируется продавать в двух вариантах размера кузова и полной массы с безальтернативным турбодизелем. Фургону обещаны вместительный кузов и насыщенная базовая комплектация, но цены пока официально не названы.
Фургон отличается дизайном с налётом футуристичности: стилистика Foton View отчасти роднит его с легковыми электромобилями из КНР. Относительно легковым выполнен и интерьер кабины.
Базовая модификация View имеет размеры 5490х1980х1990 мм при колёсной базе 3510 мм. Полная масса составляет 2490 кг, объём грузового отсека — 6,8 куб. м. Со временем семейство пополнит вариант с теми же габаритами, но с более высокой крышей (2195 мм). За счёт увеличения высоты объём фургона увеличится до 7,9 куб. м., при этом полная масса вырастет до 3100 кг.
Foton View будут комплектовать 2.0-литровым дизельным мотором с отдачей 159 л.с. и 377 Нм, в связке с 6-ступенчатой "механикой" или 8-диапазонным "автоматом".
В оснащение фургона войдут диодная светотехника, три регулируемых кресла в кабине, кондиционер, система бесключевого доступа и круиз-контроль. Среди специфических российских опций названы подогревы водительского кресла, лобового стекла и зеркал, а также адаптированный к холодам аккумулятор.
Источник: auto.ru/mag/article/v-rossii-oficialno-poyavitsya-novyy-furgon-foton-view/
#RCINews
🚛Модель: Foton Auman
Код предложения:
АЛ 225777/04-23
VIN: LVBS6PEB3NT065394
Год выпуска: 2022
Пробег: 129 975 км
Стоимость: 3 321 700 ₽
📍г. Москва
📞Телефон для связи: 8-800-700-81-34
#техникаспробегом
#Москва
#Foton
Доля китайских машин на рынке новых LCV превысила 4%
По данным «Автостат Инфо», в первом квартале 2025 года в России было продано 18 143 новых легких коммерческих автомобиля (LCV) — это на 20% меньше, чем годом ранее (22 629 ед.).
Российские марки продолжают доминировать в этом сегменте: за январь–март 2025 года было реализовано 16 476 отечественных LCV против 20 965 годом ранее. Несмотря на снижение объемов, рыночная доля российских производителей немного выросла и составила 93%.
Продажи китайских брендов в сегменте LCV за отчетный период увеличились с 687 до 750 ед., а их доля на рынке выросла на 1,2 п.п. — с 3% до 4,2%.
Лидером среди китайских производителей стал Foton, чьи продажи выросли на 168% — с 131 до 351 ед. На втором месте — Dongfeng: компания продала 288 машин, что на 27% меньше, чем годом ранее (397 ед.). Замыкает тройку Changan с результатом 45 автомобилей против 78 в первом квартале 2024 года.
#автостатинфо#автоновости#foton
Подписка на Автостат Инфо
Еще больше информации в отчетах
Для связи
🚌 Междугородний/туристический автобус FOTON 6122 - как же он похож на ЛиАЗ 5290 Круиз.
Перед нами очень интересный китайский экспонат междугороднего или туристического автобуса – ФОТОН 6122
В чем его уникальность?
1. Это очень мощный движок. Он будет ходить миллионы километров без капитального ремонта;
2. Это обалденная подвеска, автобус не раскачивается и уверенно ведёт себя на дороге;
3. Очень качественные запасные части, которые используются при сборке автобуса
Да, конечно, есть куча минусов, такие как сборка, точнее говоря качество, качество покраски, количество мест и длина автобуса.
Короче :-) вот вам видеообзор смотрите :-)
🎈Контакты для связи
+79111234999
[email protected]
#foton#фотон