Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
Как стало возможных внедрить автоматизированное планирование за три недели?
🧑💻Ответила на этот вопрос Елена Безрукова, Системный аналитик AXELOT
🗣 Если у вас остались вопросы, оставляйте комментарии под этим постом — будем рады ответить!
#Эксперты_AXELOT#TMS
📉 В результате внедрения системы управления транспортом (TMS) в компании ВсеИнструменты.ру, доля ручных операций сократилась с 90% в 2023 году до 10% в 2024 году. Директор по логистике Георгий Ким рассказал об этом на SCM Конгрессе. До автоматизации логистика компании в основном зависела от ручных процессов, что создавало риски монополизации, так как около 25-30% перевозок осуществлялись одним подрядчиком.
🚚 Прежние методы работы приводили к 100 сервисным нарушениям в месяц, что была серьёзной проблемой для компании, работающей в e-com-сегменте, где клиенты ожидают быструю и бесперебойную доставку. Ким подчеркнул, что для решения проблемы был выбран путь внутренней трансформации через аудит процессов и разработку собственной TMS, автоматизировавшей 34 параметра, включая контроль времени прибытия и проверку документов.
🔧 Новая система значительно упростила процесс управления, сократив количество метрик до критически важных показателей, что способствовало более эффективной работе. Председатель отметил, что отбор перевозчиков стал более строгим: из тысячи заявок сейчас одобряются лишь десятки. Это привело к снижению числа сервисных нарушений до 17 в месяц, а в летний период до 1-5, при одновременном увеличении пула контрагентов в три раза.
____
#ТисЛоджистик🦏
#Логистика
#Автоматизация
#TMS
Какую модель использования вы рекомендуете для решений класса RTVP?
🧑💻Ответил эксперт AXELOT: Андрей Заверткин, функциональный архитектор TMS
Получите консультацию от наших экспертов по продуктам AXELOT. Ставьте + в комментариях под постом или пишите в личные сообщения ✉️
#Эксперты_AXELOT#AXELOTTMS#TMS
Что стало первопричиной появления сервиса AXELOT RTVP?
🧑💻Ответил эксперт AXELOT: Заверткин Андрей, функциональный архитектор TMS
Ставьте реакции на пост🔥. Остались вопросы - задавайте их в комментариях под постом или пишите в личные сообщения✉️
#Эксперты_AXELOT#AXELOTTMS#TMS
26 августа 2021 в г.Алматы, Республика Казахстан состоялась ежегодная конференция “Логистика будущего”.
Логисты со всей страны встретились, чтобы обсудить текущие тренды по оптимизации своей деятельности. Партнеры и участники конференции – лидеры рынка складской и транспортной логистики.
Высокий интерес слушателей к традиционным AXELOTовским решениям #WMS, #TMS и #TOS был обусловлен не только развитием транспортно-логистического потенциала Республики Казахстан, но и введением системы обязательной маркировки на широкий перечень товарных групп.
Во второй части конференции была проведена экскурсия на один из наших объектов - складской комплекс ICEBERG ALMATY, который является самым крупным морозильным складом класса "А" в Центральной Азии общей площадью 47 000м2.
📢 Как контролировать транспортные затраты в AXELOT TMS X5?
🗣️ Рассказал специалист AXELOT Евплов Андрей, Функциональный архитектор
Остались вопросы? Пишите в комментариях под постом ⬇️
#Эксперты_AXELOT#TMS#транспортныезатраты
📢Как организовать комфортную работу водителя в AXELOT TMS и удержать сотрудника?
Ответили эксперты компании AXELOT - смотрите запись вебинара❗️
#вебинар#AXELOTTMS#TMS#эксперты_AXELOT
Почему так важна архивная функция TMS, которая относится скорее к системе операционного управления?
🗣️Ответила на этот вопрос Елена Безрукова, системный аналитик AXELOT
Получить ответы на вопросы по продуктам AXELOT и подобрать нужное решение можно через личные сообщения! Или ставьте + в комментариях под постом, мы с вами свяжемся⬇️
#AXELOT#TMS#грузоперевозки#совместимостьтоваров
📡 Может ли AXELOT TMS X5 помочь управлять рисками в транспортной логистике?
🧑💻Рассказал в видеоролике Олег Голядинец, менеджер по развитию ИТ-продукта.
Задавайте вопросы по возможностям AXELOT TMS в комментариях под постами⬇️
#AXELOT#AXELOTTMS#TMS#транспортнаялогистика
📢 Каким способом YMS может сгладить пики нагрузки на доки?
✔️ На этот вопрос ответил Сергей Шейко, руководитель отдела YMS
Ставьте реакции на пост 🔥 и задавайте свои вопросы нашим экспертам‼️
#Эксперты_AXELOT#YMS#TMS#WMS
📢Какие риски закладывают перевозчики на простой при проведении погрузо-разгрузочных работ?
На этот вопрос ответил Сергей Шейко, руководитель отдела YMS, в видео ✅
Ставьте реакции на пост 🔥 и задавайте свои вопросы нашим экспертам❗
#Эксперты_AXELOT#YMS#TMS#WMS