Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
Universitetimizda Harvest Festivali bo‘lib o‘tdi.
Bugun Al-Xorazmiy universitetida mehnat, baraka va qadriyatlar ifodasi Harvest Festivali ko‘tarinki ruhda o‘tkazildi.
🍇 Talabalarimiz tomonidan tayyorlangan milliy taomlar, ijodiy ishlanmalar, jonli musiqalar va qiziqarli ko‘ngilochar dasturlar festivalga yanada fayz qo‘shdi. 🎶
✨ Professor-o‘qituvchilarimiz ham talabalar bilan birga turli o‘yinlarda faol ishtirok etib, bayramga yanada samimiyat bag‘ishladilar.
Tadbir do‘stlik, birdamlik va ezgu qadriyatlarimizni mustahkamlashga xizmat qilishi shubhasiz.
🔁English
➖➖➖➖➖➖➖
#HarvestFestival#TalabalarHayoti
Bizning ijtimoiy tarmoqlarimiz:
Veb-sayt | Telegram | Instagram | Facebook | Aloqa-bot
Youth Day Celebrations Held at Green University
⚪️A series of events dedicated to Youth Day was held at Green University, bringing students together for a day of learning and engagement.
🧑🎓The program included a motivation workshop, English classes for local children, a “Book Brain” presentation, the “Zakovat” intellectual game, and a specialized workshop on waste management for law students. The day concluded with sports activities promoting a healthy lifestyle.
#GreenUniversity#YouthDay#StudentLife#Zakovat#SustainableDevelopment#ActiveYouth
👉ReadMore
________________________
Green University’da Yoshlar kuniga bag‘ishlangan tadbirlar o‘tkazildi
⚪️Green University’da Yoshlar kuni munosabati bilan bir qator tadbirlar tashkil etilib, talabalar uchun mazmunli va samarali kun tashkil etildi.
🧑🎓Dastur doirasida motivatsiya bo‘yicha trening, mahalliy bolalar uchun ingliz tili mashg‘ulotlari, “Book Brain” loyihasi taqdimoti, “Zakovat” intellektual o‘yini hamda huquqshunoslik yo‘nalishi talabalari uchun chiqindilarni boshqarish mavzusida maxsus seminar o‘tkazildi. Kun yakunida sog‘lom turmush tarzini targ‘ib qiluvchi sport tadbirlari tashkil etildi.
#GreenUniversity#YoshlarKuni#TalabalarHayoti#Zakovat#BarqarorRivojlanish#FaolYoshlar
👉Batafsil
✉️[email protected]
☎️ +998 55 512 00 77
📍Location
🌐Website | 📱Telegram | 📱Instagram | 📱LinkedIn | 🟥YouTube
Highlights from the Youth Day at Green University.
#GreenUniversity#YouthDay#StudentLeague#TeamSpirit#Leadership
__________________________
Green University Yoshkar kunidan lavhalar.
#GreenUniversity#YoshlarKuni#TalabalarLigasi#TalabalarHayoti#Jamoaviylik#Liderlik
✉️[email protected]
☎️ +998 55 512 00 77
📍Location
🌐Website | 📱Telegram | 📱Instagram | 📱LinkedIn | 🟥YouTube
📌On April 9, Green University actively celebrated Youth Day with a dynamic and engaging program that brought together students, faculty, and administration.
🗣️Throughout the day, participants took part in a wide range of activities — from educational workshops and intellectual games to open lectures and cultural events. The atmosphere was vibrant, reflecting the energy, enthusiasm, and ambition of the youth.
A special highlight was the opening of the Student League sports competitions, where the university rector, Dr. Bakhtiyor Pulatov personally took part alongside students. His participation made the event even more inspiring, strengthening the spirit of unity, teamwork, and friendly competition.
✅Youth Day at Green University once again proved that the university is not only a center of education, but also a space where students actively develop, engage, and succeed together.
#GreenUniversity#YouthDay#StudentLeague#StudentLife#TeamSpirit#Leadership
👉ReadMore __________________________
📌9-aprel kuni Green University'da Yoshlar kuni keng qamrovli va mazmunli dastur asosida faol tarzda nishonlandi. Tadbirlar davomida talabalar, professor-o‘qituvchilar hamda universitet rahbariyati birlashdi.
🗣️Kun davomida ishtirokchilar turli ta’limiy seminarlar, intellektual o‘yinlar, ochiq ma’ruzalar va madaniy tadbirlarda faol qatnashdilar. Muhit yoshlarga xos energiya, ishtiyoq va intilishlarga boy bo‘ldi.
Tadbirning eng esda qolarli biri Talabalar ligasi sport musobaqalarining ochilish marosimi bo‘ldi. Unda universitet rektori, professor Baxtiyor Pulatov ham talabalar bilan bir qatorda ishtirok etib, o‘zining faol ishtiroki orqali birlik, jamoaviylik va sog‘lom raqobat muhitini yanada mustahkamladi.
✔️Green University'da Yoshlar kuni yana bir bor universitet nafaqat ta’lim maskani, balki talabalar har tomonlama rivojlanadigan, faol ishtirok etadigan va birgalikda yuksaladigan muhit ekanini namoyon etdi.
#GreenUniversity#YoshlarKuni#TalabalarLigasi#TalabalarHayoti#Jamoaviylik#Liderlik
👉Batafsil
✉️[email protected]
☎️ +998 55 512 00 77
📍Location
🌐Website | 📱Telegram | 📱Instagram | 📱LinkedIn | 🟥YouTube
📢OPEN LECTURE ANNOUNCEMENT
Dear students, professors, and university staff!
Join us on April 9, 2026, at 14:00 for an engaging open lecture by Sherzod Ziyoyev, Senior Lecturer of the Department of Foreign Languages, historian and political scientist.
🎓Topic:
“Strategic Importance of the Modern Silk Road Projects and Transit Routes for Eurasian Land Countries”
🌍The lecture will explore the history, evolution, and current relevance of the modern Silk Roads — a must-attend for anyone interested in geopolitics, history, and regional development.
🗣Languages: Uzbek & English
📍Venue: University Conference Hall
💪Don’t miss this opportunity to gain valuable insights!
#OpenLecture#SilkRoad#Eurasia#Geopolitics#GreenUniversity#StudentLife _________________________
📢OCHIQ MA’RUZA E’LONI
Hurmatli talabalar, professor-o‘qituvchilar va universitet xodimlari!
Sizlarni 2026-yil 9-aprel kuni soat 14:00 da bo‘lib o‘tadigan ochiq ma’ruzaga taklif qilamiz. Ma’ruzachi — Xorijiy tillar kafedrasi katta o‘qituvchisi, tarixchi va siyosatshunos Sherzod Ziyoyev.
🎓Mavzu:
“Zamonaviy Ipak yo‘li loyihalari va tranzit yo‘nalishlarining Yevroosiyo quruqlik mamlakatlari uchun strategik ahamiyati”
🌍Ma’ruza davomida zamonaviy Ipak yo‘lining tarixi, rivojlanishi va bugungi kundagi ahamiyati haqida so‘z yuritiladi. Ushbu mavzuga qiziqqan barcha ishtirok etishga taklif etiladi.
🗣Tillar: o‘zbek va ingliz
📍Manzil: Universitet konferensiya zali
💪Foydali bilimlar olish imkoniyatini qo‘ldan boy bermang!
#OchiqMaruza#IpakYoli#Yevroosiyo#Geosiyosat#GreenUniversity#TalabalarHayoti
✉️[email protected]
☎️ +998 55 512 00 77
📍Location
🌐Website | 📱Telegram | 📱Instagram | 📱LinkedIn | 🟥YouTube