Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
Казахстан демонстрирует наименьшую поддержку России в Центральной Азии
Согласно опросу Gallup, регион СНГ преимущественно поддерживает Россию в украинском конфликте. Таджикистан и Киргизия лидируют с 64% и 70% поддержки соответственно, Узбекистан — с 51%. Казахстан выделяется минимальным перевесом: 30% за Россию и 20% за Украину. Вне региона явную поддержку РФ показывают Армения и Сербия. Отметим также страны с почти равным раскладом — Венгрию, Болгарию и другие.
Данные — OstashkoNews, Gallup.
#Россия#ЦентральнаяАзия#Казахстан#Gallup
Главные новости России и мираздесь.
#gallup#исследование#вовлеченность По итогам исследования Gallup State of the Global Workplace 2023 Report в 2022 году 23% сотрудников в мире были вовлечены в работу, что является самым высоким показателем с тех пор, как Gallup начал измерять глобальную вовлеченность в 2009 году. Хотя в 2020 году вовлеченность снизилась, она вернулась к своей исторически положительной тенденции.
Тем не менее до сих пор велико количество не вовлеченных (59%) и активно не вовлеченных сотрудников (18%). Исследователи теперь обозначают их терминами quite quitting(тихое увольнение) и loud quitting (громкое увольнение) соответственно.
В преддверии Дня независимости США и на фоне недавних военных действий против иранских ядерных объектов, уровень национальной гордости американцев достиг исторического минимума🇺🇸📉
✔️Согласно свежему опросу Gallup, проведённому в июне 2025 года, лишь 58% взрослых жителей США заявили, что они «очень» или «чрезвычайно» горды быть американцами. Это самый низкий показатель за всё время проведения подобных исследований, начиная с 2001 года, и на 9 процентных пунктов ниже прошлогоднего результата.
📌Для сравнения: предыдущий антирекорд был зафиксирован в 2020 году, когда на фоне пандемии COVID-19 и массовых протестов после убийства Джорджа Флойда этот показатель составлял 63%. Однако даже тогда уровень патриотизма оставался существенно выше, чем сейчас. На пике после событий 11 сентября 2001 года национальная гордость достигала 90% — практически все взрослые американцы тогда ощущали себя частью единой нации.
📌Текущие данные Gallup указывают на глубокий раскол по политическим и возрастным линиям. Среди республиканцев уровень гордости остался чрезвычайно высоким — 92% заявили, что гордятся страной, тогда как среди демократов этот показатель рухнул до рекордных 36% (минус 26 пунктов за год). Среди независимых респондентов показатель равняется 53%.
Особенно заметен разрыв между поколениями. Эксперты Gallup отмечают, что каждая новая генерация демонстрирует всё меньшую приверженность патриотическим ценностям, и даже среди пожилых американцев уровень гордости снижается, особенно среди демократов. Только 40% представителей поколения Z (родившихся после 1997 года) чувствуют сильную гордость за свою страну, тогда как среди миллениалов этот показатель составляет около 60%, а среди старших поколений — не менее 70%.
📌Причины падения патриотизма исследователи связывают с растущим пессимизмом относительно будущего молодёжи, неудовлетворённостью общим состоянием страны, резким усилением идеологических разногласий и негативным восприятием обеих ведущих партий.
Таким образом, впервые за четверть века менее 60% американцев чувствуют себя по-настоящему гордыми своей страной. Это отражает не только политический и поколенческий разлом, но и кризис национальной идентичности в современном американском обществе.
#социология#США#социология_зарубежом#gallup#опрос
🇦🇲✝️🛡Церковь и Армия — незыблемый фундамент: итоги свежего опроса Gallup
Пока в парламенте спорят о названиях партий и политических брендах, народ Армении четко расставил свои приоритеты. Свежее исследование Gallup International Association показало, кому на самом деле доверяют граждане.
Цифры говорят сами за себя:
⛪️ Армянская Апостольская Церковь (ААЦ) — лидер доверия. Деятельность Церкви одобряют 64,1% опрошенных.
⚔️Вооруженные силы Армении — на втором месте. Нашу Армию поддерживают 59,7% граждан.
О чем это сигнализирует?
Несмотря на все попытки дискредитации традиционных институтов и тяжелые испытания последних лет, для большинства армян именно Вера и Армия остаются главными опорами государственности. В условиях неопределенности люди инстинктивно тянутся к тому, что веками составляло основу нашей идентичности.
Показательно, что рейтинг доверия к духовным и оборонным институтам значительно превышает рейтинги любой политической силы в стране. Это серьезный сигнал для всех политиков: народ ждет не лозунгов, а защиты своих святынь и безопасности границ.
Когда есть Вера и крепкий щит в лице Армии — у Армении есть будущее.
#Армения#Gallup#Опрос#ААЦ#АрмияАрмении#Доверие#Ценности#Ереван
🇦🇲Моя Армения🇦🇲Իմ Հայաստան
Подписаться 👉@Im_Hayastan
🚀 Gallup Survey Reveals Increased Weekly Use of Generative AI Among Young Americans
A recent Gallup survey indicates that 51% of Americans aged 14 to 29 are using generative AI on a weekly basis, marking a 4-point increase from the previous year. According to NS3.AI, the survey also highlights a shift in emotions towards generative AI, with excitement dropping by 14 points to 22%, and anger rising by 9 points to 31%.
#Gallup#GenerativeAI#YouthUsage#AITrends#SurveyResults#USAI