Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
⌨️ Microsoft Word'da matnni tahrirlash uchun mo‘ljallangan klavishlar birikmalari (2-qism)
👉🏻 Ushbu ro‘yxatning 1-qismi.
• CTRL + B — belgilangan matn shriftini qalin qilish / oddiy holatiga qaytarish;
• CTRL + I — belgilangan matn shriftini kursiv qilish / oddiy holatiga qaytarish;
• CTRL + U — belgilangan matn ostiga chizish / oddiy holatiga qaytarish;
• CTRL + D — Шрифт muloqot oynasini ekranga chaqirish;
• CTRL + Q — abzatsga nisbatan qo‘llanilgan formatni o‘chirish;
• CTRL + M — chap tomondan otstup qo‘shish;
• CTRL + SHIFT + M — chap tomondan otstupni olib tashlash;
• CTRL + PROBEL — belgilangan matn fragmentidan, unga nisbatan qo‘llanilgan formatni o‘chirish (matn dastur sozlamasida qoida bo‘yicha o‘rnatilgan shrift turi va o‘lchamiga qaytadi).
• CTRL + SHIFT + A — barcha harflarni katta (agar allaqachon katta bo‘lsa, u holda kichik) ko‘rinishga keltirish;
• CTRL + SHIFT + C (CTRL + SHIFT + V) — formatlarni nusxalash / boshqa matnga nisbatan qo‘llash;
• CTRL + SHIFT + D — matn ostiga ikkitalik chiziq chizish / bekor qilish;
• CTRL + SHIFT + H — belgilangan matnni berkitish / ko‘rsatish (bunda berkitilgan matn chop etish vaqtida ko‘rinmaydi, Главная menyu satrida chop etilmaydigan belgilarni ko‘rsatish uchun xizmat qiluvchi ¶ tugmasi ustiga bosilgan taqdirda ko‘rinadi);
• CTRL + SHIFT + K — barcha harflarni kichik harf o‘lchamidagi katta harflar ko‘rinishiga keltirish / bekor qilish;
• CTRL + SHIFT + W — so‘zlar ostiga probellarni hisobga olmagan holda chizish;
• CTRL + T (CTRL + SHIFT + T) — Выступ qo‘shish / olib tashlash (abzatslarga nisbatan qo‘llaniladi);
• SHIFT + F1 — dastur oynasining o‘ng tomonida ochiluvchi matnni formatlash panelini faollashtirish / berkitish.
🤔Kanalimiz sizga kerakli bilimlarni ulashyabdi deb hisoblaysizmi?
👉🏼Birinchi raqamli windows blog | @itspecuz | #hotkeys
⚡️Excel dasturida tezkor tugmalar
Ctrl + Delete Tanlangan matn o'chiriladi.
Ctrl + Alt + V Maxsus qo'shimchalar paydo bo'ladi
Ctrl + belgisi + Belgilangan ustunlar va satrlar qo'shiladi.
Ctrl + belgisi - Tanlangan ustunlar yoki satrlar o'chiriladi.
Ctrl + D Pastki qator tanlangan katakchadagi ma'lumotlar bilan to'ldiriladi
Ctrl + R O'ng tarafdagi diapazon tanlangan uyaning ma'lumotlari bilan to'ldiriladi.
Ctrl + H Search-Replace oynasi paydo bo'ladi.
Ctrl + Z So'nggi harakatlar bekor qilinadi.
Ctrl + Y So'nggi harakat takrorlandi
Ctrl + 1 Hujayra formatini tahrirlash oynasi ochiladi.
Ctrl + B tugmalari Matn qalin qilib ko'rsatilgan
Ctrl + I Kursiv o'rnatish
Ctrl + U Matn tagiga chizilgan.
Ctrl + 5 Belgilangan matn ajratib ko'rsatilgan.
Ctrl + Enter Barcha kataklar tanlangan.
Ctrl +; Sana ko'rsatilgan
Ctrl + Shift +; Vaqt muhrlandi
Ctrl + Backspace Kursor oldingi katakka qaytadi.
Ctrl + Bo'sh joy Ustun ajralib turadi
Ctrl + A Ko'rinadigan narsalar ta'kidlangan.
Ctrl + End Kursor oxirgi katakka joylashtirilgan.
Ctrl + Shift + End Oxirgi katak ajratilgan
Ctrl + strelkalar Kursor ustunning chekkalari bo'ylab o'qlar yo'nalishi bo'yicha harakatlanadi.
Ctrl + N Yangi bo'sh kitob paydo bo'ladi
Ctrl + S Hujjat saqlandi
Ctrl + O Kerakli faylni qidirish oynasi ochiladi.
Ctrl + L tugmalarini bosing Smart stol rejimi boshlanadi
Ctrl + F2 Ko'rib chiqish kiritilgan
Ctrl + K Giperhavola kiritilgan
Ctrl + F3 Ismlar menejeri ishga tushirilad
K.B: Hammasini yod olish qiyin lekin doimiy foydalanish ancha ishni tezlashtiradi!
👉🏼Birinchi raqamli windows blog | #hotkeys
⚡️Excel dasturida tezkor tugmalar
Ctrl + Delete Tanlangan matn o'chiriladi.
Ctrl + Alt + V Maxsus qo'shimchalar paydo bo'ladi
Ctrl + belgisi + Belgilangan ustunlar va satrlar qo'shiladi.
Ctrl + belgisi - Tanlangan ustunlar yoki satrlar o'chiriladi.
Ctrl + D Pastki qator tanlangan katakchadagi ma'lumotlar bilan to'ldiriladi
Ctrl + R O'ng tarafdagi diapazon tanlangan uyaning ma'lumotlari bilan to'ldiriladi.
Ctrl + H Search-Replace oynasi paydo bo'ladi.
Ctrl + Z So'nggi harakatlar bekor qilinadi.
Ctrl + Y So'nggi harakat takrorlandi
Ctrl + 1 Hujayra formatini tahrirlash oynasi ochiladi.
Ctrl + B tugmalari Matn qalin qilib ko'rsatilgan
Ctrl + I Kursiv o'rnatish
Ctrl + U Matn tagiga chizilgan.
Ctrl + 5 Belgilangan matn ajratib ko'rsatilgan.
Ctrl + Enter Barcha kataklar tanlangan.
Ctrl +; Sana ko'rsatilgan
Ctrl + Shift +; Vaqt muhrlandi
Ctrl + Backspace Kursor oldingi katakka qaytadi.
Ctrl + Bo'sh joy Ustun ajralib turadi
Ctrl + A Ko'rinadigan narsalar ta'kidlangan.
Ctrl + End Kursor oxirgi katakka joylashtirilgan.
Ctrl + Shift + End Oxirgi katak ajratilgan
Ctrl + strelkalar Kursor ustunning chekkalari bo'ylab o'qlar yo'nalishi bo'yicha harakatlanadi.
Ctrl + N Yangi bo'sh kitob paydo bo'ladi
Ctrl + S Hujjat saqlandi
Ctrl + O Kerakli faylni qidirish oynasi ochiladi.
Ctrl + L tugmalarini bosing Smart stol rejimi boshlanadi
Ctrl + F2 Ko'rib chiqish kiritilgan
Ctrl + K Giperhavola kiritilgan
Ctrl + F3 Ismlar menejeri ishga tushirilad
K.B: Hammasini yod olish qiyin lekin doimiy foydalanish ancha ishni tezlashtiradi!
👉🏼Birinchi raqamli windows blog | #hotkeys
⌨️ Microsoft Word'da matnni tahrirlash uchun mo‘ljallangan klavishlar birikmalari (2-qism)
👉🏻 Ushbu ro‘yxatning 1-qismi.
• CTRL + B — belgilangan matn shriftini qalin qilish / oddiy holatiga qaytarish;
• CTRL + I — belgilangan matn shriftini kursiv qilish / oddiy holatiga qaytarish;
• CTRL + U — belgilangan matn ostiga chizish / oddiy holatiga qaytarish;
• CTRL + D — Шрифт muloqot oynasini ekranga chaqirish;
• CTRL + Q — abzatsga nisbatan qo‘llanilgan formatni o‘chirish;
• CTRL + M — chap tomondan otstup qo‘shish;
• CTRL + SHIFT + M — chap tomondan otstupni olib tashlash;
• CTRL + PROBEL — belgilangan matn fragmentidan, unga nisbatan qo‘llanilgan formatni o‘chirish (matn dastur sozlamasida qoida bo‘yicha o‘rnatilgan shrift turi va o‘lchamiga qaytadi).
• CTRL + SHIFT + A — barcha harflarni katta (agar allaqachon katta bo‘lsa, u holda kichik) ko‘rinishga keltirish;
• CTRL + SHIFT + C (CTRL + SHIFT + V) — formatlarni nusxalash / boshqa matnga nisbatan qo‘llash;
• CTRL + SHIFT + D — matn ostiga ikkitalik chiziq chizish / bekor qilish;
• CTRL + SHIFT + H — belgilangan matnni berkitish / ko‘rsatish (bunda berkitilgan matn chop etish vaqtida ko‘rinmaydi, Главная menyu satrida chop etilmaydigan belgilarni ko‘rsatish uchun xizmat qiluvchi ¶ tugmasi ustiga bosilgan taqdirda ko‘rinadi);
• CTRL + SHIFT + K — barcha harflarni kichik harf o‘lchamidagi katta harflar ko‘rinishiga keltirish / bekor qilish;
• CTRL + SHIFT + W — so‘zlar ostiga probellarni hisobga olmagan holda chizish;
• CTRL + T (CTRL + SHIFT + T) — Выступ qo‘shish / olib tashlash (abzatslarga nisbatan qo‘llaniladi);
• SHIFT + F1 — dastur oynasining o‘ng tomonida ochiluvchi matnni formatlash panelini faollashtirish / berkitish.
🤔Kanalimiz sizga kerakli bilimlarni ulashyabdi deb hisoblaysizmi?
👉🏼Birinchi raqamli windows blog | @itspecuz | #hotkeys
Har kuni kerak bo'ladigan kombinatsiyalar
#hotkeys
🔸F2 - belgilangan fayl yoki papkani nomini tahrirlash (переименовать) imkonini beradi.
🔸Alt + Enter - belgilangan fayl yoki papkani xususiyatlari (свойства) ni ochadi.
🔸Ctrl + Shift + Esc - "Диспетчер задач" ni ochishga imkon beradi. U yerdan "injiq" dasturlarga "zarba" berish mumkin.
🤔Siz qaysi kombinatsiyalardan juda ko'p foydalanasiz?
💻 Kompyuterni birga o'rganamiz ⤵️
Telegram I YouTube I Insta I TikTok