Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
Управляйте IT-инфраструктурой из единого центра: полный обзор состояния защиты, контроль ресурсов и снижение затрат, поиск и устранение уязвимостей, автоматическая минимизация рисков - всё это с Kaspersky Security Center.
⌨️Курс KL 009.12 Kaspersky Security Center. Systems Management всего за 1 день погружает в эти возможности и дает практические навыки через 14 лабораторных работ.
После обучения слушатели смогут:
🔵управлять уязвимостями и обновлениями программ на компьютерах сети.
🔵 Захватывать, изменять настройки и устанавливать образы операционных систем.
🔵Работать с реестрами программного и аппаратного обеспечения, а также управлять лицензиями сторонних приложений и настраивать интеграцию с SIEM-системами.
Идеально для: системных администраторов Windows, специалистов по ИБ, инженеров технической и предпродажной поддержки.
🔗Оставляй заявку на обучение в Rozum и будь на шаг впереди!
🟢Подписаться
#Кибербезопасность
#Kaspersky
📌В ноябре в Беларуси аттестованы еще два центра кибербезопасности
Об этом на форуме «Кибербезопасность 2026» рассказал представитель Оперативно-аналитического центра при Президенте Республики Беларусь Илья Мячин.
🔵Всего по состоянию на третью декаду ноября 2025 года в нашей стране – 26 центров кибербезопасности, которые прошли аттестацию.
С начала этого года свои ЦКБ аттестовали Министерство внутренних дел, Государственный таможенный комитет, «Сбербанк», «Альфа-Банк», «Могилевоблгаз», «Приорбанк», «Гродно Азот», «СофтЛайн Директ» и «ЦНИИТУ».
✴️Полный перечень аттестованных центров кибербезопасности доступен на сайте ОАЦ.
#кибербезопасность#оац#kaspersky#беларусь
➡️КиберПул
В вузах Беларуси в этом году открыты четыре лаборатории для обучения кибербезопасности. На следующий год запланированы как минимум ещедве.
Лаборатории открыты при поддержке «Лаборатории Касперского». По словам представителя компании в Беларуси Дмитрия Кудревича, это вклад в развитие киберкомьюнити в нашей стране, которое растет с каждым днем. "Еще пару лет назад на конференцию по кибербезопасности регистрировалось в лучшем случае 200-300 человек, сегодня – тысяча (с модерацией при регистрации)".
#кибербезопасность#цкб#лабораториияКасперского#kaspersky#итобразование
О кибератаках в Беларуси, СНГ и мире говорили сегодня на форуме «Кибербезопасность 2026». Своими данными поделилась «Лаборатория Касперского».
2025 год: регион СНГ
🔸Возросла активность хактивистов — кибергруппировок, которые преследуют политические цели.
🔸57% пользователей столкнулись с различными киберугрозами.
🔸На 70% выросло количество атак в интернете.
🔸В 3 раза выросло количество попыток перехода по фишинговым и мошенническим ссылкам.
🔸Зафиксировано 542 тыс. попыток атак с использованием программ-вымогателей (шифровальщиков). Рост числа атак, по словам ведущего исследователя угроз информационной безопасности Kaspersky Татьяны Шишковой, частично обусловлен уходом из региона некоторых западных вендоров. Это приводит к тому, что программное обеспечение перестает обновляться, в том числе получать обновления безопасности. В результате компании, которые продолжают пользоваться решениями ушедших вендоров, становятся более уязвимыми.
2025 год: Беларусь
🔸Каждый третий пользователь в Беларуси столкнулся с локальными угрозами (на его компьютере был обнаружен вредоносный файл).
🔸С веб-угрозами (например, попыткой перехода по вредоносной ссылке) столкнулись 13% рядовых пользователей и 7% корпоративных.
🔸Почти каждый двадцатый пользователь подвергся атакам на мобильные устройства.
#Кибербезопасность#kaspersky#кибербез#SOC#итминск#фкб2026