Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
😊👍 Ta’lim eko-oromgohi va "Yosh eko-chempionlar" ko‘ngillilar dasturini boshlaganimiz haqida shunday ajoyib fikr-mulohazalar olyapmiz!
☝️ Sizning g‘ayratingizni qo‘llab-quvvatlash va "Bundan keyin nima qilish kerak" hamda "Nima uchun ovozimiz muhim" degan ikki muhim savolga javob berish uchun atrof-muhitni asrash va iqlim o‘zgarishiga qarshi kurashish bo‘yicha amaliy maslahatlar bilan tanishishni taklif etamiz.
📣 Yoshlarning ekologik masalalardagi faol ishtiroki davlat siyosatini shakllantirishda yetakchi o‘rinni egallashi kerakligiga ishonamiz.
⌛️Harakat qilishga tayyorlaning!
#YoungClimateChampions
~~~
😊👍 Такой классный фидбэк получаем по нашему образовательному эколагерю и запуску волонтерской программы «Молодые эко-чемпионы»!
☝️ Чтобы поддержать ваш настрой и ответить на 2 важных вопроса: «Что делать дальше» и «Почему наш голос важен», предлагаем ознакомиться с практическими советами по защите окружающей среды и борьбе с изменением климата.
📣 Мы верим, что активное участие молодёжи в экологической повестке должно занимать лидирующее место в формировании государственной политики.
⌛️Приготовьтесь действовать!
#YoungClimateChampions
🌐Zamin🌐Instagram🌐Facebook
👋😊 Hammaga salom!
🥇 4-avgust kuni Young Climate Champions volontyorlik dasturining ikkinchi to‘plami uchun besh kunlik ta’lim lageri boshlanadi.
👨🎓 Bugun esa yosh murabbiylar — bir yil davomida faol ishlagan va dasturda ishtirok etishni davom ettirish istagini bildirgan Yosh eko-chempionlarning birinchi bitiruvchilari 8 nafar qiz va 5 nafar yigit uchun uch kunlik mashg‘ulotlarga start beriladi.
👨🏫 Hozirda ularning barchasi YUNISEF xalqaro murabbiyi bilan murabbiylik va fasilitatsiya ko‘nikmalariga o‘qishmoqda. Yoshlar umumiy maqsadlarga erishish uchun guruhda ishlash jarayonini tashkil etishning nozik jihatlarini o‘zlashtiradilar. Mashg‘ulot ishtirokchilar bir-birini yaxshiroq tushunishni, muhokama mavzusiga sodiq qolishni va umumiy xulosalarga yanada samaraliroq erishishni o‘rganishlari uchun guruhda muloqot, o‘zaro ta’sir va qaror qabul qilishni yaxshilashga qaratilgan usullar va vositalarni o‘rgatishni o‘z ichiga olgan.
💬 Bu hozirgi paytda zarur bo‘lgan ko‘nikmalar, shunday emasmi?
👍 Qani, bolalar, sizga omad!
~~~
👋😊 Всем привет!
🥇 4 августа стартует пятидневный образовательный лагерь второго набора волонтёрской программы Young Climate Champions.
👨🎓 А сегодня начинается трёхдневный тренинг для молодых менторов — восьми девушек и пяти парней. Это наши выпускники первого набора Молодых эко-чемпионов, которые активно проработали целый год и выразили желание продолжить участие в программе.
👨🏫 Сейчас все они пройдут обучение с международным тренером ЮНИСЕФ навыкам тренерства и фасилитации. Ребята освоят тонкости организации процесса групповой работы для достижения общих целей. Программа тренинга включает в себя обучение методам и инструментам, направленным на улучшение коммуникации, взаимодействия и принятия решений в группе. Это позволит участникам лучше понимать друг друга, придерживаться темы обсуждения и более эффективно приходить к общим выводам.
💬 Необходимые навыки в современном мире, не так ли?
👍 Ребята, удачи!
#YoungClimateChampions#EcoSchoolsUzbekistan
😀Zamin🌐Instagram🌐Facebook
👋😊 Hammaga salom!
💭 She’r yoki teoremani isbotlash bosqichlarini yodlash ularning "ichki mantig‘i"ni tushungan holda ancha osonligini payqagan bo‘lsangiz kerak.
🗝 Bu aynan "ongli yondashuv" degan biroz jonga tekkan iboraga to‘g‘ri keladi. Biroq, aynan shu ongli yondashuv muvaffaqiyatli ekologik ta’limning (va umuman ta’limning) kalitidir. O‘z harakatlarimizning tabiatga ta’sirini anglash orqali tanqidiy fikrlashni rivojlantiramiz va atrof-muhit bilan bog‘liqlikni his qila boshlaymiz.
💡 Aynan shu maqsadda yosh eko-chempionlarimiz "Eco-schools Uzbekistan" loyihasining barcha ishtirokchilari uchun 300 dan ortiq o‘qituvchi va 2000 ga yaqin o‘quvchini jalb etgan holda treninglar o‘tkazdilar.
☝️ Umid qilamizki, siz har bir qadamning ahamiyati borligini anglab yetdingiz.
—
👋😊 Всем привет!
💭 Вы наверняка замечали, что выучить стих или последовательность шагов в доказательстве теоремы значительно легче, поняв их «внутреннюю логику».
🗝 Это как раз то, что называется немного надоевшим словом «осознанность». Но именно осознанность — ключ к успешному экобразованию (и образованию в целом). Понимая последствия своих действий для природы, мы развиваем критическое мышление и начинаем чувствовать связь с окружающей средой.
💡 Именно для этого наши молодые эко-чемпионы провели тренинги всем участникам проекта Eco-schools Uzbekistan, задействовав более 300 педагогов и около 2000 учащихся.
☝️ И мы надеемся, что вы осознали, что…
каждый шаг имеет значение.
#EcoSchoolsUzbekistan#YoungClimateChampions
😀Zamin🌐Instagram🌐Facebook
📆 Bugun Maktabgacha va maktab ta’limi vazirligi, Ekologiya vazirligi, YUNISEF, BMTTD va Zamin fondi "Young Climate Champions" — Yosh ekochempionlar milliy hamjamiyatining ikkinchi bosqichi uchun ta’lim lagerini boshladi.
🌍 Besh kun davomida mamlakatning barcha hududlaridan tashrif buyurgan 51 nafar ekomaktab o‘quvchilari iqlim o‘zgarishlari va O‘zbekiston oldida turgan iqlimiy muammolar borasidagi bilimlarini oshiradilar. Yoshlar global iqlim muammolarini o‘rganib, kommunikatsiya va jamoat tashabbuslari bo‘yicha ko‘nikmalarga ega bo‘ladilar.
👨🏫 Yosh ekochempionlarga YUNISEF va BMTTDning xalqaro iqlim ekspertlari, O‘zbekiston Gidrometeorologiya ilmiy-tadqiqot instituti hamda Markaziy Osiyo Atrof-muhit va Iqlim o‘zgarishlarini o‘rganish universiteti — Green University mutaxassislari murabbiylik qiladilar.
📰 Yangiliklardan xabardor bo‘ling, oldinda sizni ko‘plab qiziqarli voqealar va foydali narsalar kutmoqda!
~~~
📆 Сегодня МДШО, Минэкологии, ЮНИСЕФ, ПРООН и Фонд Zamin запускают образовательный лагерь Второго набора национального сообщества Молодых экочемпионов — Young Climate Champions.
🌍 51 экошкольник со всех регионов страны в течение пяти дней будут учиться, повышая свою осведомлённость о климатических изменениях и вызовах, с которыми сталкивается Узбекистан. Ребятам изучат также глобальные проблемы изменения климата, овладеют искусством коммуникации и общественных инициатив.
👨🏫 Наставниками выступят международные эксперты ЮНИСЕФ и ПРООН по климату, специалисты из Научно-исследовательского гидрометеорологического института Узбекистана, Центральноазиатского университета изучения окружающей среды и изменения климата Green University.
📰 Следите за новостями, впереди будет много интересного и полезного!
#YoungClimateChampions#EcoSchoolsUzbekistan#SustainableDevelopment
😀Zamin🌐Instagram🌐Facebook
💬 O‘zbekistonda ilk bor BMTning Iqlim o‘zgarishi to‘g‘risidagi сheklangan konvensiyasi huzuridagi Bolalar va yoshlar masalalari bo‘yicha global rasmiy guruh shafeligida Yoshlarning mahalliy konferensiyasi (LCOY) o‘tkazilmoqda.
📣 LCOY "yashil" madaniyat va yoshlarning iqlim o‘zgarishiga qarshi harakatlarini targ‘ib qilish borasida muhim platforma hisoblanadi. Platforma yoshlarga iqlim muammolari bo‘yicha g‘oyalar va yechimlar almashish, tengdoshlari va ekspertlar bilan muloqot qilish imkonini beradi. Konferensiya yoshlar va bolalarni iqlim, iqlim o‘zgarishi va uning oqibatlari fanidan xabardor qilish, shuningdek, O‘zbekistonning barqaror taraqqiyoti uchun iqlim o‘zgarishiga qarshi kurashda yoshlarning sa’y-harakatlarini kuchaytirishga qaratilgan.
📩 Konferensiyada ishtirok etish uchun minglab arizalar orasidan O‘zbekistonning barcha hududlaridan bo‘lgan 100 nafardan ortiq yoshlar tanlov asosida saralab olindi.
🏆 O‘zbekistondagi LCOY "Yosh ekochempionlar" milliy hamjamiyati a’zolari bo‘lgan yoshlar tomonidan tashabbus ko‘rsatilgan va tashkil etilgan organik jarayonning natijasi bo‘ldi.
~~~
💬 Впервые в Узбекистане проходит Локальная конференция молодёжи (LCOY) под эгидой Глобальной официальной группы по делам детей и молодёжи при Рамочной конвенции ООН об изменении климата.
📣 LCOY является важной площадкой для продвижения «зелёной» культуры и действий молодёжи для борьбы с изменением климата. Платформа позволит молодёжи обменяться идеями и решениями климатических проблем, пообщаться со сверстниками и экспертами. Конференция направлена на просвещение молодёжи и детей в области науки о климате, изменения климата и его последствий, а также на усиление действий молодёжи в борьбе с изменением климата для устойчивого развития Узбекистана.
📩 Для участия в конференции на конкурсной основе из тысяч заявок были отобраны более 100 молодых ребят со всех регионов Узбекистана.
🏆 LCOY в Узбекистане — следствие органичного процесса, инициированного и организованного молодыми людьми — членами Национального сообщества «Молодые экочемпионы».
#LCOY#YoungClimateChampions#EcoSchoolsUzbekistan
😀Zamin🌐Instagram🌐Facebook