Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
Хотите начать работать в Битрикс24, но не знаете, как к нему подступиться? Чудо Иван записал для вас отличную инструкцию по первым шагам! Делай раз, делай два😀 Пользуйтесь! Дорогу осилит идущий!
#Битрикс24#Bitrix24
https://youtu.be/UhE6z_PNzVk
🚀 Вебинар: Автоматизация логистики с Bitrix24
📅 Дата: 27 марта 2025 г.
🕒 Время: 19:00
📍 Формат: онлайн в канале https://t.me/Bloglogist
Приглашаем вас на практический вебинар, где мы разберем, как с помощью Bitrix24 оптимизировать логистические процессы, автоматизировать управление грузоперевозками и складскими операциями.
🔍 Что будет на вебинаре:
✅ Основные возможности Bitrix24 для логистики.
✅ Интеграция CRM с логистическими процессами.
✅ Автоматизация уведомлений, маршрутов и заказов.
✅ Управление клиентами и аналитика в Bitrix24.
✅ Примеры из практики и ответы на ваши вопросы.
🌟 Спикеры:
- Николай Юдинских: эксперт в области грузоперевозок и логистики.
- Артем Иващенко: специалист по внедрению Bitrix24 с нуля до сложных интеграций.
👥 Для кого:
- Владельцы логистических компаний.
- Менеджеры по логистике и складу.
- IT-специалисты и все, кто хочет автоматизировать бизнес-процессы.
Не упустите шанс узнать, как сделать вашу логистику эффективнее с Bitrix24!
🎁 P.S. Участники вебинара получат полезные материалы и чек-листы по автоматизации процессов.
#Логистика#Bitrix24#Автоматизация#Вебинар#CRM
В современном мире всё меньше становится видов работ, которые нельзя было бы автоматизировать. С одной стороны, нет ничего лучше живого общения и звонка от своего личного менеджера с вопросом: «Как ваши дела?». Мы помним эти времена, когда это было заложено в головах менеджеров, а не в задачах CRM. Но о преимуществах внедрения CRM спорить бессмысленно, поэтому даже самые консервативные компании продолжают обращаться за внедрением, наш кейс как раз об этом. Продолжаем упрощать сложное и не усложнять простое.
#Битрикс24#Bitrix24#CRM#методсоли
https://blog.saltpro.ru/Solim-zapravlyaem-i-zapuskaem-CRM-Bitriks24-v-optovoj-kompanii/
🧐 Как уже пятница?
А где традиционный мем от Соли?
А вот же он) Друзья, давайте вместе улыбнёмся наступающим выходным 😄
#Битрикс24#Bitrix24#Битрикс#Bitrix#CRM#методСоли#мемсоль
💥 Пятничный мем врывается в чатик!
С последним рабочим днём недели друзья) Солнечных вам выходных 🌞
#Битрикс24#Bitrix24#Битрикс#Bitrix#CRM#методСоли#мемсоль
💼 Зачастую работа менеджеров состоит в обработке поступивших заявок, но если заказ от постоянного клиента не пришёл, про него могут и забыть.
🤝 Наше "Приложение Автоматическое создание сделок по потерянным клиентам" вынуждает менеджера работать с постоянными клиентами, так как создаёт в CRM новые сделки по контактам, компаниям, чья регулярность заказов "страдает".
⚙ Своевременно реагируйте на сбои в заказах и не упускайте клиентов. А если у вас пока нет постоянных клиентов, с нашим приложением они обязательно появятся!
Подробнее о работе незаменимого помощника рассказываем в нашей инструкции.👇🏻
https://blog.saltpro.ru/~comeback
#Битрикс24#Bitrix24#Битрикс#Bitrix#CRM#ЗапускCRM#ВнедрениеCRM
🏚 Процедура бронирования квартир в новостройках достаточна проста. Выбрал, позвонил, забронировал, - вуаля!
🧐 А как устроен процесс изнутри в связке CRM Битрикс24 и сайта заказчика, посмотрим сегодня в кейсе.
https://clck.ru/ae4C8
#Битрикс24#Bitrix24#Битрикс#Bitrix#CRM#ЗапускCRM#ВнедрениеCRM
💡Порция полезных материалов, а именно – кейс!
Тема: «Jira и Битрик24». Как совместить, зачем, в чём польза?
👍Читайте, будет интересно!
https://blog.saltpro.ru/~JiraIntBitrix
Есть вопросы? Напишите нам – будем рады ответить.
#Битрикс24#Bitrix24#Битрикс#Bitrix#CRM#ЗапускCRM#ВнедрениеCRM
🤝 Командная работа эффективнее, чем работа в одиночку, поэтому слаженно работающий коллектив – мечта работодателя.
💥 Сегодня разберём, кейс про работу бизнес-процессов, которые помогают выстроить процесс сообщений-напоминаний в командной работе любого отдела.
📢 Читайте, будет интересно! https://blog.saltpro.ru/~reminders
#Битрикс24#Bitrix24#Битрикс#Bitrix#CRM#ЗапускCRM#ВнедрениеCRM
🌐 Если у вас есть сайт на 1С-Битрикс и коробочный Битрикс24 и при этом наблюдаются проблемы с авторизацией пользователей, работой чатов и приложений, то, возможно, наша статья вам поможет.
😁 Читайте, наша техническая поддержка уверяет, что будет интересно.
https://blog.saltpro.ru/~cookies
#Битрикс24#Bitrix24#Битрикс#Bitrix#CRM#ЗапускCRM#ВнедрениеCRM