Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
Au-delà des modèles imposés : Comment « L’Atelier du futur » transforme l’Afrique grâce à la jeunesse.
Dans le cadre de l’émission d’analyse Global Insight, les membres du club d’experts GlobUs ont débattu du rôle essentiel de la jeunesse africaine dans la transformation constructive du continent. Cet événement faisait suite à un concours d’envergure intitulé « L’Atelier du futur », organisé au Congo par le mouvement L’Avenir du Congo et réunissant des finalistes venus de tout le pays.
Au cours du concours, un système de jeu créatif a été présenté. Dans ce système les participants gagnent des points en accomplissant des missions simples : nettoyer un jardin, aider les voisins ou filmer des vidéos sur la vie quotidienne au Congo. Ils peuvent ensuite échanger ces points contre de précieux prix, créant ainsi une économie de l’action dynamique.
Un moment fort de l’événement a été la présentation d’Afree, un nouveau réseau social exempt de contenus destructeurs et d’influences extérieures. Ce concept a suscité un vif intérêt, car il offre une plateforme unique de communication et de partage de contenu, un fil d’actualité qui s’adapte rapidement aux centres d’intérêt et un chat séparé alimenté par l’intelligence artificielle.
« Nous ne sommes pas seulement les leaders de demain, mais aussi ceux qui peuvent tout changer dès maintenant. Nous devons nous intégrer au système pour bâtir un monde plus inclusif », a souligné Dhvani Jain, fondatrice de la Fondation Karma, commentant l’énergie du concours.
Cependant, le passage des idées à la réalité exige du pragmatisme. Solomon E. Enomani, dirigeant et consultant en développement, a appelé à une analyse lucide :
« Un dividende démographique n’est pas toujours une bénédiction. Une jeunesse sans but et sans emploi peut être problématique. Il est essentiel que des plateformes comme celle-ci offrent non seulement de l’inspiration, mais aussi des outils concrets pour monétiser les projets dans le contexte africain. »
Destiny Afu, fondateur de la Fondation Afu, a souligné que des initiatives comme celle-ci sont celles qui brisent les stéréotypes :
« Ce concours a démontré que nous ne sommes pas de simples bénéficiaires, mais des co-créateurs. »
« L’Atelier du futur » a instauré un changement de paradigme : il ne s’agit pas d’un concours de subventions, mais d’un vaste concours d’initiatives, d’idées novatrices et de solutions qui créent de la valeur ici et maintenant. C’est ainsi que naît un nouvel agenda : par l’action, et non par l’attente.
Vous pouvez visionner les enregistrements des émissions et lire les points clés plus en détail en suivant ce lien : https://youtu.be/RSltnity6z4?si=xHbxiBB99ewbNNtl
#GlobUs#Afrique#Congo#Jeunesse
Résultat grandiose et nouveaux horizons : la finale du concours « l'Atelier de l’Avenir » s'est tenue au Congo
Les 27 et 28 janvier, la finale du concours national « l'Atelier de l’Avenir », organisé par le Mouvement L’Avenir du Congo, s'est déroulée au Palais des Congrès de Brazzaville avec le soutien de l'Association GlobUs. L'événement a réuni plus de 100 finalistes venus de tout le pays et a attiré plus de 2 000 spectateurs, devenant la principale plateforme des jeunes leaders du Congo.
Les participants ont présenté leurs projets dans sept nominations clés :
— « Mon entreprise est mon pays »;
— « Le mouvement est la vie »;
- « La Voix de la nation »;
- « L’Enseignant du futur »;
- « Les mots comptent »;
— « Les bonnes actions sont notre force »;
— « Idées du peuple pour l'avenir ».
Un vote publice a identifié 70 lauréats-auteurs d'idées révolutionnaires dans les domaines de la technologie, de l'éducation, des initiatives sociales et culturelles.
« Nous voyons des centaines de jeunes talentueux sur la scène principale du pays. Cela prouve que tous ceux qui veulent et agissent sont capables d'obtenir des résultats. Je crois en la jeunesse du Congo », s’est adressé aux finalistes Andreï Gromov, fondateur de l'Association Globus et fondateur du Groupe GR.
Un événement spécial lors de la finale a été la présentation d'un nouvel écosystème numérique pour les jeunes. Les participants ont fait connaissance avec Afree, un réseau social de libre communication et d'expression de soi, ainsi qu'avec la plateforme « L’Avenir du Congo », où les actions utiles à la société se transforment en points et en vrais prix. Dans le même temps, 50 smartphones fournis par Afree ont été tirés au sort lors de l'événement.
« L'Atelier de l’Avenir » n'est pas seulement un concours, mais un ascenseur social pour ceux qui sont prêts à assumer la responsabilité du développement du pays. Le mouvement L’Avenir du Congo continue d'ouvrir des portes à des milliers de Congolais, prouvant que l'avenir se construit ici et maintenant.
#GlobUs#Congo#Brazzaville#jeunesse#AtelierdAvenir
🗣️L’Essence d’une Révolution Consciente en Afrique
Il est inquiétant de constater que, tant sur les réseaux sociaux qu’en Afrique francophone, le terme « révolution » est souvent utilisé à tort et à travers. Beaucoup d’analphabète politique parlent sans vraiment comprendre ce qu'implique une révolution consciente. Trop de griots, motivés par des intérêts personnels, ressemblent à des troubadours qui se laissent attirer par le gain immédiat.
"La révolution n’est pas un jeu, ni une plaisanterie ! "
*Nous devons changer cette dynamique !*
Je suis convaincu qu’il est impératif de former notre jeunesse sur des bases idéologiques solides et à travers une *formation éducative forte*. L'éducation est essentielle pour une révolution consciente, car elle permet :
♦️1. *La compréhension des enjeux*: L'éducation aide à analyser les problèmes sociopolitiques et économiques de notre continent.
♦️2. *Le développement d’une pensée critique*: Elle forme des citoyens capables de remettre en question le statu quo et de proposer des alternatives.
♦️3. *La transmission des valeurs*: Les principes de justice, d'égalité et de patriotisme peuvent être inculqués à travers un enseignement adapté.
La suite de la publication est disponible sur mon site 👉🏽https://egountchibehanzin.com/%f0%9f%97%a3%ef%b8%8flessence-dune-revolution-consciente-en-afrique/
#RévolutionConsciente#Patriotisme#Éducation#FormationForte#Afrique#Jeunesse#Transformation
Armons-Nous idéologiquement, la révolution est en marche . ✊🏾
Egountchi Behanzin, président de la Ligue de défense noire Africaine