Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
🔴 Oligarhul Vladimir Plahotniuc a apărut pe lista #INTERPOL! 🔎
RISE Moldova a investigat afacerile familiei oligarhului fugar în Turcia 🇹🇷💰. Fiul cel mare al fostului lider democrat, folosind un alt nume, a înființat discret o companie la Istanbul, alături de un cetățean rus.
🕵️♂️ Săptămâna trecută, reporterii RISE Moldova au vizitat sediul firmei, iar în aceeași perioadă, INTERPOL l-a inclus oficial pe Plahotniuc pe lista persoanelor căutate internațional.
Citește investigația completă aici: 🔗https://www.rise.md/articol/afacerile-familiei-plahotniuc-in-turcia/
🙏 Îţi mulțumim că urmărești investigațiile realizate de RISE Moldova! O mare parte din munca noastră se bazează pe voluntariat. Cu puțin mai multe resurse, am putea face mult mai mult.
Susține-ne printr-o donație: https://www.rise.md/donatii
https://descubreenmexico.com/interpol-dara-concierto-gratuito-en-el-zocalo/?utm_source=banners&utm_medium=telegram&utm_campaign=tarde&utm_term=jorge
El próximo sábado 20 de abril, la banda Interpol dará un concierto gratuito en el Zócalo de la Ciudad de México.
En sus redes sociales, la banda neoyorquina escribió: “Estamos absolutamente electrificados de emoción al anunciar que daremos un concierto gratuito para nuestros fans mexicanos, y de hecho, para fans de todas partes, en el Zócalo en el corazón de la Ciudad de México el sábado 20 de abril de 2024”.
#interpol#cdmx
🌍В Африке арестованы 1209 киберпреступников в рамках операции Serengeti 2.0, координируемой Интерполом
Речь идет о 88 000 потерпевших лицах.
Операция продолжалась с июня по август 2025 года.
Она объединила следователей из 18 африканских стран для борьбы с киберпреступностью, включая программы-вымогатели, online -мошенничества, включая «нигерийские письма» (мошенничества с наследством), фишинг и компрометацию деловой электронной почты (BEC).
Все эти угрозы
отражены
в недавнем докладе об оценке киберугроз Интерпола в Африке.
👇В ходе операции в Анголе ликвидировали 25 нелегальных центров майнинга криптовалют.
Конфисковано оборудование стоимостью более $37 миллионов, которое правительство теперь планирует использовать для поддержки распределения электроэнергии в уязвимых районах.
👇В Замбии в ходе операции ликвидировали call-центр, который работал по схеме с инвестициями в криптовалюты и обманул более 65 000 жертв на сумму не менее $300 миллионов.
👇В Кот-д'Ивуаре ликвидировали транснациональную группу,которая работала по одной из самых старейших схем: с «нигерийскими письмами», обещая наследство в обмен на оплату пошлины.
Сумма профита киберпреступников составила $1,6 миллиона.
В прошлом году в ходе первой операции Serengeti Интерпол арестовал более 1000 человек.
#interpol#cybercrime#киберновости#киберпреступность#africa
Подписаться
Буст канала
¿Le llegó su hora? 🤯
Ex gobernador de Michoacán es buscado por la #Interpol👇
#SilvanoAureoles huyó con ayuda del #CJNG, dijó la Fiscalía de #Michoacán.
Por ello se emitió una ficha roja 🟥 para su localización y detención.
🌍В Африке задержали 260 человек за кибермошенничество и интим-шантаж
Речь о "сексторшн" и романтических аферах.
✅Спецслужбы 14 африканских государств при поддержке Интерпола арестовали 260 подозреваемых в киберпреступлениях, связанных с романтическими аферами (romantic scam) и сексуальным вымогательством, когда жертв шантажируют откровенными изображениями или видео (sextortion).
С 28 июля по 11 августа 2025 года в Африке
прошла
международная операция
Contender 3.0, направленная против транснациональных преступных групп, использующих цифровые платформы для мошенничества.
🔍В результате силовики стран Африки задержали 260 человек и изъяли более 1200 устройств.
«Следователи установили 1463 жертвы, связанные с мошенничеством, и оценили их убытки почти в $ 2,8 миллиона», - говорится в заявлении Интерпола.
🔍По словам директора отдела по киберпреступности Интерпола Нила Джеттона, жертвами становились люди разных возрастов, но "многие из этих афер затрагивают пожилых людей".
✍️Полиция выявила IP-адреса, цифровую инфраструктуру, домены и профили в соцсетях, связанные с мошенническими группировками, что позволило изъять USB-накопители, SIM-карты и поддельные документы, а также ликвидировать 81 киберпреступную группу по всей Африке.
🔍Рост онлайн-платформ открыл новые возможности для преступников, наносящих жертвам финансовый и психологический ущерб.
Когда мы просим страны назвать главную киберугрозу, они всегда указывают на online-мошенничество. С такими преступлениями крайне сложно бороться - миллионы людей ежедневно кликают на фишинговые письма”, - отметил Джеттон.
#interpol#cybercrime#africa#cooperation#киберпреступность
Подписаться
Буст канала
🔎 RISE Moldova a investigat afacerile familiei oligarhului fugar Vladimir Plahotniuc în Turcia. 🇹🇷💰
👨💼 Fiul cel mare al fostului lider democrat, folosind un alt nume, a înființat discret 🏢 o companie la Istanbul 🏙️ împreună cu un cetățean rus 🇷🇺.
📸 Săptămâna trecută, reporterii RISE Moldova au vizitat sediul firmei, iar în aceeași perioadă, Interpol 🚨 l-a inclus oficial pe Plahotniuc pe lista persoanelor căutate internațional 🌍🔍.
📲 Citește ancheta completă aici:
🔗👉rise.md/articol/afacerile-familiei-plahotniuc-in-turcia/
#RISEMoldova🕵️♂️#Investigație#Plahotniuc🚨#Interpol#Moldova🇲🇩#Corupție💰#Turcia🇹🇷