Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
#vacancy
Toshkent Kimyo xalqaro universiteti Namangan filiali Tibbiyot yo'nalishida darslarni sifatli tashkil qila oladigan kadrlar uchun quyidagi vakant joylarga ishga taklif qiladi.
1. Biofizika fani oʻqituvchisi.
2. Hamshiralik fani oʻqituvchisi.
Nomzodlar Tibbiyot yo’nalishlari bo’yicha kamida magistratura bosqichini tamomlagan bo’lishlari yoki PhD ilmiy darajasiga ega bo’lishlari kerak. Darslarni oʻz vaqtida sifatli oʻtadigan, masʼuliyatli boʻlishi lozim.
Mehnat shartnomalari asosiy, o'rindosh hamda soatbay tartibida tuzilishi mumkin.
Nomzodlar quyidagi elektron manzilga oʻz rezyumelarini (maʼlumotnomalarini) yuborishlari talab qilinadi: [email protected]
📌Qoʻshimcha maʼlumotlar uchun: +998 97 441 95 65.
#vacancy
Toshkent Kimyo xalqaro universiteti Namangan filialiga quyidagi yo'nalishida darslarni sifatli tashkil qila oladigan kadrlar uchun quyidagi vakant joylarga ishga taklif qiladi.
Maktabgacha taʼlim mutaxassisi
Boshlangʼich taʼlim mutaxassisi
Maxsus pedagogika (surdopedagog, tiflopedagog)
+998934919960
Moliya
Buxgalteriya hisobi
Yoʼl harakati boʼyicha mutaxassislar
Informatika
+998946090055
Ingliz tili
Rus tili
Koreys tili
Oʼzbek tili
+998994828088
Bizni kuzatishda davom eting.
🌐Website💬Telegram🌐Instagram🌐Youtube🌐Facebook
#vacancy
Toshkent Kimyo xalqaro universiteti Namangan filiali Tibbiyot yo'nalishida darslarni sifatli tashkil qila oladigan kadrlar uchun quyidagi vakant joylarga ishga taklif qiladi.
1. Odam anatomiyasi fani oʻqituvchisi.
2. Tibbiy biologiya va genetika fani oʻqituvchisi.
3. Tibbiy kimyo fani oʻqituvchisi.
4. Lotin tili fani oʻqituvchisi.
5. Tibbiyotda informatika fani oʻqituvchisi.
6. Biofizika fani oʻqituvchisi.
7. Hamshiralik fani oʻqituvchisi.
8. Tibbiyotga kirish fani oʻqituvchisi.
9. Dispetcher hodim.
Nomzodlarga qoʻyiladigan talablar bilan quyidagi havola orqali batafsil tanishib chiqing.
🔗https://telegra.ph/CV-07-03-3
📞 +998974419565
📧 [email protected]
🌐www.kiut.uz
#vacancy
🧳Malayziyaning "Summit next" kompaniyasi xodimlar izlamoqda!
2020-yilda tashkil etilgan va bosh qarorgohi Malayziyaning Kuala-Lumpur shahrida joylashgan “SummitNext” butun dunyo bo‘ylab faoliyat yuritadi, AQSH, Hindiston va Filippinda ofislari mavjud bo‘lib, 1000 nafar xodimga ega. Kompaniya har qanday ko‘lamdagi biznes uchun global autsorsing yechimlarini taqdim etishga ixtisoslashgan va uning yillik aylanmasi 1 milliard dollarni tashkil etadi.
Ish: Telemarketing bo'yicha menejer (Masofaviy)
Talablar:
Bakalavr darajasi;
1+ yil telemarketing tajribasi;
ingliz tilida muloqot (С1+)
Majburiyatlar:
-Texnik xizmatlar uchun buyurtmalarni rejalashtirish maqsadida qo'ng'iroqlar qilish.
📞+998994774749
✈️Rezyume yuborish
______
🧳The Malaysian company "Summit next" is looking for employees
SummitNext, founded in 2020 and headquartered in Kuala Lumpur, Malaysia, operates globally with offices in the USA, India, and the Philippines, and employs 1,000 people. The company specializes in delivering global outsourcing solutions to businesses of all sizes, with an annual turnover of $1 billion.
Job: Telemarketing Executive (Remote)
Qualifications:
Bachelor’s degree
1+ year telemarketing experience
Excellent English skills (С1+)
Responsibilities:
Make calls to schedule maintenance bookings.
📞+998994774749
✈️Submit your CV
Telegram | Instagram | Facebook | Youtube | LinkedIn
#vacancy ВАКАНСИЯ
стилистический редактор (английский язык)
Развлекательный портал о знаменитостях, звездах кино и королевских семьях ищет стилистического редактора, свободно владеющего американским английским (письменно - на уровне носителя).
Обязанности:
— работа с готовым новостным контентом на американском английском языке;
— стилистическая обработка и правка текстов.
Требования:
— владение американским английским языком в совершенстве, в том числе разговорный и идиоматический язык (в идеале вы — носитель языка).
— опыт работы в англоязычных медиа от 1 года будет очень весомым.
Условия:
— график 5/2, полностью удаленная работа по европейскому времени (от UTC+0 до UTC+4).
— зарплата от 2000 долларов в месяц и выше по итогам испытательного срока в 3 месяца.
Откликнуться: https://forms.gle/rV1V7vVsjEAYkTjt7
#vacancy / @redfoxuz
RedFox Jamoasiga Sotuv menejerlikka ishga taklif qilamiz.
Ajoyib natijalar sizni quvontiradimi?
Odamlar bilan oson va tez muloqotga kirishib keta olasizmi?
Demak, asl qobiliyatlaringizni yuzaga chiqarish vaqti keldi!
Asosiy vazifalar:
• Qo'ng'iroqlarga javob berish (Call Center)
• Ofis boshqaruv administratorligi (Reception)
• Tarmoqlarimizdagi akkauntlarga, xabarlarga, comment'larga javob berish (Account and Community manager).
Qo'shimcha:
Til bilsa yaxshi, bilmasa zarari yo'q.
Shaxsiy kompyuteri bo'lsa yaxshi, bo'lmasa zarari yo'q.
👩🏻💼18-25 yoshgacha qizlar uchun tavsiya etiladi.
💸 Oylik maosh: 2 500 000 so'm.
Bilim va tajribaga qarab: 1 500 000 so'mdan boshlanadi.
📅 Haftada 6 kun / yakshanba dam
⏰ Ish vaqti: 09:00 - 19:00 gacha
☎️ +998 71 200 5008
📬@RedFoxSuhbat
@redfoxuz / #vacancy
Proyekt menejer kerak
50% KPI 😱
Ajoyib natijalar sizni quvontiradimi?
Odamlar bilan oson va tez muloqotga kirishib keta olasizmi?
Demak asl qobiliyatlaringizni yuzaga chiqarish vaqti keldi!
Sizni yildan yilga rivojlanib borayotgan yosh va pozitiv RedFox jamosiga taklif qilamiz 😉
Qo'shimcha:
● Bepul ish o'rgatamiz;
● Real proyektlarda qatnashasiz;
● Ishni o'rganib moslashib olganingizdan so'ng, o'sib boruvchi daromad + bonuslar
🎁1 oylik sinov muddatida yotoqxona bepul
💸Oylik maosh: 1 000 000 so'mdan - 10 000 000 so'mgacha. +50% KPI.
Oylikka qo’shimcha bonus sifatida har bir yopgan proyektidan 50% daromad beriladi.
Murojaat uchun:
👨💻@redfoxsuhbat
📞+998 97 7785008
#vacancy / @redfoxuz
RedFox Jamoasiga Adminstratorlikka ishga taklif qilamiz.
Ajoyib natijalar sizni quvontiradimi?
Odamlar bilan oson va tez muloqotga kirishib keta olasizmi?
Demak, asl qobiliyatlaringizni yuzaga chiqarish vaqti keldi!
Asosiy vazifalar:
• Ofis boshqaruvi adminstratorlik (Reseption)
• Qo'ng'iroqlarga javob berish (Call Center)
• Tarmoqlarimizdagi akkauntlarga, xabarlarga, comment'larga javob berish (Account and Community manager).
Qo'shimcha:
Til bilsa yaxshi, bilmasa zarari yo'q.
Shaxsiy kompyuteri bo'lsa yaxshi, bo'lmasa zarari yo'q.
💸 Oylik maosh: 1 500 000 so'mdan boshlanadi.
📅 Haftada 6 kun / yakshanba dam
⏰ Ish vaqti: 09:00 - 19:00 gacha
☎️ +998 33 7785008
📬@RedFoxSuhbat
@redfoxuz / #vacancy
🙋🏻♂️ RedFox Jamoasiga Marketing mutaxassisligi bo'yicha noldan tayyorlash uchun shogird olamiz.
📌 Qo'shimcha:
• Bepul ish o'rgatamiz;
• Real proyektlarda qatnashasiz;
Ishni o'rganib, moslashib olganingizdan so'ng, o'sib boruvchi daromad + bonuslar
⚠️ Talablar:
• Kompyuteri bo'lishi kerak.
• 12 soatdan kam shug'ullanmasligi kerak.
Batafsil ma'lumot uchun:
☎️ +998977785008
📬@RedFoxSuhbat
⚠️ Online shogird umuman olmaymiz