Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
🇰🇷🇺🇿Biznes va tadbirkorlik oliy maktabi Janubiy Koreyaning AJOU universiteti bilan hamkorlikdagi “MBA in IT Business” dasturi 2025-2026 o'quv yiliga start oldi
🇺🇿 Tadbirda Toshkentdagi Ajou universitetining birinchi prorektori Byung Kwan Kim, o‘quv ishlari direktori Lee Sang Hyon, Janubiy Koreya professorlari va Oliy biznes maktabi direktor o‘rinbosari B. Xolboyev qatnashdilar.
🎓 Yangi o‘quv yili bilan hamkorlik doirasidagi faoliyat yangi ruhda boshlandi. Dastur doirasida tinglovchilarga nafaqat nazariy bilimlar, balki amaliy loyihalar va xalqaro tajriba asosida bilim olish imkoniyatlari yaratiladi.
Dastur ikki yil davom etadi:
1-yil Oliy biznes maktabida,
2-yil Janubiy Koreyada Ajou universitetida tahsil olinadi.
Bitiruvchilarga Ajou universiteti “IT-Business” va Oliy biznes maktabi MBA diplomlari taqdim etiladi.
🔴 Mazkur hamkorlik O‘zbekiston va Koreya ta’lim aloqalarini mustahkamlab, yuqori malakali mutaxassislar tayyorlashga xizmat qiladi.
🇷🇺RU
🇬🇧ENG
#GSBE#GraduateSchool#AJOU#Masterstudy#DualDegree
🔝Web-site |🔝Facebook | 🔝Instagram | 🔝Youtube
🇰🇷🇺🇿AJOU universiteti vakillari bilan uchrashuv
🇺🇿 Toshkent shahridagi Ajou universiteti va Biznes va tadbirkorlik oliy maktabi vakillari o‘rtasida uchrashuv bo‘lib o‘tdi. Uchrashuvda Ajou universiteti birinchi prorektor Byon Kvan Kim hamda Oliy biznes maktabi direktor o‘rinbosari B. Xolboyev ishtirok etdi.
🎓 Uchrashuvda tomonlar o‘zaro hamkorlikning ahamiyati va qiymatini ta’kidlab o‘tib kelgusida Toshkentdagi Ajou universiteti, Koreya Respublikasidagi Ajou Universiteti va Oliy biznes maktabi o‘rtasida uch tomonlama hamkorlikni yo‘lga qo‘yish imkoniyatini muhokama qildilar. Ushbu dastur doirasida Toshkentdagi Ajou universitetining IT-Business bakalavriat bitiruvchilari MBA in IT-Business magistratura dasturida tahsil olish imkoniga ega bo‘ladilar: birinchi kurs — Oliy biznes maktabida, ikkinchi kurs — Koreya Respublikasidagi Ajou Universitetida.
🔴 Ajou Universiteti birinchi prorektori mazkur taklifni ijobiy baholab, dasturni amalga oshirishga tayyorligini tasdiqladi.
🇷🇺RU
🇬🇧ENG
#GSBE#GraduateSchool#AJOU#Masterstudy#DualDegree
🔝Web-site |🔝Facebook | 🔝Instagram | 🔝Youtube
⭐️ORIENTATION DAY
🇺🇿🇷🇺 Biznes va tadbirkorlik oliy maktabida Rossiya Federatsiyasi Prezidenti huzuridagi Xalq xo‘jaligi va davlat xizmati akademiyasi (РАНХиГС) bilan hamkorlikda amalga oshirilayotgan magistratura dasturining yangi o‘quv yili tantanali ravishda ochildi.
🇺🇿 Tadbirda РАНХиГС prorektori A. Margolin, Oliy biznes maktabi direktori o‘rinbosari M. Adilov, har ikki oliy ta’lim muassasasi professor-o‘qituvchilari hamda birinchi kurs talabalari ishtirok etdi.
🤔Batafsil
———
🇺🇿🇷🇺 В Высшей школе бизнеса и предпринимательства состоялась торжественная церемония открытия нового учебного года магистерской программы, реализуемой в сотрудничестве с Российской академией народного хозяйства и государственной службы при Президенте Российской Федерации (РАНХиГС).
🇺🇿 В мероприятии приняли участие проректор РАНХиГС А. Марголин, заместитель директора Высшей школы бизнеса М. Адилов, профессорско-преподавательский состав обоих вузов, а также студенты первого курса.
🤔Подробно
———
🇺🇿🇷🇺 The new academic year of the joint Master’s program implemented in cooperation with the Russian Presidential Academy of National Economy and Public Administration (RANEPA) was solemnly opened at the Graduate School of Business and Entrepreneurship.
🇺🇿 The event was attended by RANEPA Vice-Rector A. Margolin, Deputy Director of the Graduate School of Business M. Adilov, professors from both higher education institutions, and first-year students.
🤔More
#GSBE#GraduateSchool#RANEPA#Masterstudy#DualDegree
🔝Web-site |🔝Facebook | 🔝Instagram | 🔝Youtube
🇺🇿🇰🇷Janubiy Koreyaning Chungbuk milliy universiteti vakillari bilan uchrashuv bo‘lib o‘tdi
🇺🇿 Biznes va tadbirkorlik oliy maktabi hamda Janubiy Koreyaning Chungbuk milliy universiteti vakillari bilan uchrashuv bo‘lib o‘tdi. Uchrashuvda Oliy biznes maktabi direktor o‘rinbosari B. Xolboyev hamda Chungbuk milliy universiteti xalqaro aloqalar bo‘limi dekan o‘rinbosari, professor A. Nasriddinov ishtirok etdi.
🎓 Muzokaralar davomida tomonlar ikki ta’lim muassasalari faoliyati bilan yaqindan tanishib, hamkorlikni yo‘lga qo‘yish va rivojlantirish istiqbollari bilan bog‘liq masalalar bo‘yicha muhokama olib bordilar.
✅ Xususan, tinglovchilar almashinuvi (student exchange), 1+1 formatidagi qo‘shma magistratura dasturlarini amalga oshirish, shuningdek, akademik hamkorlikning boshqa salohiyatli yo‘nalishlari bo‘yicha hamkorlik imkoniyatlarini muhokama qildilar.
🔴 Yakunda tomonlar kelgusidagi hamkorlikni rivojlantirish yo‘nalishlari va yangi tashabbuslarni muhokama qilib, akademik aloqalarni kengaytirishdan o‘zaro manfaatdor ekanliklari bildirildi.
🇷🇺RU
🇬🇧ENG
#GSBE#GraduateSchool#CBNU#Masterstudy#DualDegree
🔝Web-site |🔝Facebook | 🔝Instagram | 🔝Youtube