Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
⚠️Мировая авиация на грани топливного кризиса из-за конфликта вокруг Ирана
Международные авиакомпании и аэропорты начинают готовиться к возможному дефициту авиационного топлива на фоне эскалации вокруг Ирана, сообщает Financial Times.
✈️Руководители крупнейших перевозчиков уже бьют тревогу:
— становится всё сложнее получать гарантии наличия топлива в аэропортах на май
— разрабатываются экстренные сценарии на случай перебоев
💬Глава Air France-KLM Бен Смит заявил, что рассматриваются меры вплоть до:
— сокращения рейсов
— отказа от направлений, где есть риск остаться без топлива на обратный путь
🌏 Под угрозой — регионы, зависящие от поставок нефти с Ближнего Востока, включая Юго-Восточную Азию.
🇻🇳 Вьетнам уже предупредил о возможном сокращении авиарейсов.
📌 Глобальные последствия конфликта начинают ощущаться не только в политике, но и в мировой логистике и авиации.
🇦🇲Моя Армения🇦🇲Իմ Հայաստան
Подписаться 👉@Im_Hayastan
#МировойТопливныйКризис#Иран#БлижнийВосток#Авиация#Нефть#Геополитика#Новости#ImHayastan
🇷🇺🇺🇸Politico: Москва предлагала команде Трампа обмен — Иран в обмен на Украину
По данным Politico, Москва якобы предложила администрации Дональда Трампа сделку:
Россия прекращает передачу Ирану разведданных, включая информацию о координатах американских объектов,
а США взамен прекращают предоставлять Украине разведданные о России.
Как утверждает издание, это предложение российский посланник Кирилл Дмитриев озвучил американским представителям Стиву Уиткоффу и Джареду Кушнеру во время встречи в Майами.
По информации Politico, Вашингтон это предложение отклонил.
Европейские дипломаты, как пишет издание, увидели в этом попытку Москвы вбить клин между США и Европой, одновременно ослабив поддержку Украины и разыграв иранское направление в собственных интересах.
При этом ранее США уже временно приостанавливали обмен разведданными с Украиной, что само по себе показывало: тема разведки стала одним из ключевых рычагов давления в большой геополитической игре.
Что это значит на деле?
Россия пытается торговать сразу несколькими фронтами:
Украиной, Ираном, безопасностью США и расколом Запада.
Это уже не дипломатия в классическом смысле — это политический аукцион, где Москва пытается продать “услугу”, которую сама же превратила в угрозу.
Если публикация Politico соответствует действительности, это еще одно подтверждение:
в мировой политике сегодня торгуют не только нефтью, газом и оружием — торгуют войной, разведкой и жизнями целых регионов.
Для Армении это ещё один урок:
в мире, где великие державы меняют разведку, войны и союзников как фишки на столе, выживает только тот, кто умеет рассчитывать прежде всего на себя.
🇦🇲Моя Армения🇦🇲Իմ Հայաստան
Подписаться 👉@Im_Hayastan
#Россия#США#Трамп#Украина#Иран#Politico#Геополитика#Армения#МояАрмения#ImHayastan
⚡️🚨🇮🇷Тегеран под ударами: серия авиаатак утром 20 марта
По территории столицы Ирана — Тегерана — утром пятницы были нанесены несколько авиаударов. Об этом сообщил корреспондент Al Jazeera Али Хашем.
💥 По его словам, зафиксировано не менее 4–5 ударов:
— взрывы в восточной части города
— как минимум один удар в центре Тегерана
— над городом виден дым
🛡️ Иранские системы ПВО активно работают и пытаются перехватить цели.
📌 Обстановка остаётся напряжённой, информация уточняется.
🇦🇲Моя Армения🇦🇲Իմ Հայաստան
Подписаться 👉@Im_Hayastan
#Иран#Тегеран#Авиаудары#БлижнийВосток#Эскалация#ПВО#Новости#ImHayastan
⚡️🇦🇲✝️🇬🇪Католикос всех армян Гарегин II может отправиться в Грузию на похороны Илии II
Католикос всех армян Гарегин II намерен поехать в Грузию для участия в церемонии прощания с Патриархом всея Грузии Илией II.
📩 В Первопрестольном Эчмиадзине подтвердили, что официальное письмо от Патриархии Грузинской православной церкви уже получено.
⚖️ В настоящий момент адвокаты занимаются вопросами, связанными с существующими ограничениями на выезд Католикоса, чтобы обеспечить его участие в траурных мероприятиях.
📌Ситуация находится в процессе решения.
🇦🇲Моя Армения🇦🇲Իմ Հայաստան
Подписаться 👉@Im_Hayastan
#Армения#ГарегинII#Эчмиадзин#Грузия#ИлияII#Церковь#Новости#ImHayastan
⚡️Сразу 4 важных сигнала для Армении за день — и все они о том, куда толкают страну
Пока обществу продают лозунги о «мире», «балансе» и «новых возможностях», внешнеполитическая картина становится всё жёстче и откровеннее.
▪️Армения запросила у ЕС уже третью помощь по линии European Peace Facility
Это означает одно: даже сама власть понимает, что без внешней поддержки вопросы безопасности никуда не делись. Когда стране действительно нужна опора, красивых речей уже недостаточно.
▪️При этом в МИД прямо признают: Армения пока не готова начать процесс вступления в ЕС
То есть обществу годами продают европейскую надежду, но когда доходит до конкретики — звучит холодное признание: страна не готова. Получается знакомая схема: громкие обещания для публики, а потом осторожный шаг назад.
▪️Армения уже отправила гуманитарную помощь Ирану — в основном медикаменты
С точки зрения человеческой и соседской логики это понятно. Но для Еревана это ещё и показатель реальности: как бы ни рисовали новые геополитические маршруты, Иран остаётся для Армении жизненно важным соседом, а не абстрактной темой для дипломатии.
▪️На этом фоне Ереванговорит, что диалог с Турцией уже “созрел” для дипотношений и полного открытия границы
Звучит красиво. Но любой армянин имеет право спросить: на каких условиях, какой ценой и что именно снова попросят “пересмотреть” ради этой нормализации? Одновременно Армения углубляет и новые дипломатические шаги с Пакистаном — ещё один знак того, что региональная конфигурация меняется быстрее, чем обществу успевают объяснить.
Что это значит для Армении?
Сегодняшний день показал главное:
Армения всё глубже втягивается в сложную перестройку внешней политики — между ЕС, Ираном, Турцией и новыми дипломатическими направлениями.
Но когда власть двигает страну сразу по нескольким чувствительным трекам, народ обязан знать не только красивую витрину, но и политическую цену каждого такого шага.
Потому что вопрос уже не в том, с кем говорить.
Вопрос в том, что Армения отдаёт взамен.
#Армения#Հայաստան#МИДАрмении#ЕС#Iran#Турция#Пашинян#Геополитика#ImHayastan
🇦🇲Моя Армения🇦🇲Իմ Հայաստան
Подписаться 👉@Im_Hayastan
🇮🇷⚡️Первое новогоднее обращение Моджтабы Хаменеи: Иран входит в 1405 год под лозунгом “экономики сопротивления”
Новый верховный лидер Ирана, аятолла Моджтаба Хаменеи, выступил с первым обращением по случаю Ноуруза и объявил лозунг нового года:
«Экономика сопротивления в тени национального единства и национальной безопасности».
В своем послании он сделал главный акцент не на празднике, а на выживании, мобилизации и внутренней консолидации страны.
Это уже не риторика мирного времени — это язык государства, которое открыто готовится к долгому противостоянию.
Хаменеи также отверг причастность Ирана к недавним атакам в Турции и Омане, заявив, что ни вооруженные силы Исламской Республики, ни союзные ей силы к этим ударам отношения не имеют.
Сам факт этого обращения важен вдвойне:
это первое новогоднее послание после прихода Моджтабы Хаменеи к власти в марте 2026 года, на фоне войны и резкой перестройки власти в Тегеране. Reuters ранее сообщал, что его возвышение происходило под сильным влиянием Корпуса стражей исламской революции, а сам новый лидер долго не появлялся публично.
Что это значит?
Иран официально дает понять:
страна не собирается говорить с миром языком уступок;
приоритеты Тегерана сейчас — безопасность, единство, жесткий контроль внутри и экономическая адаптация к войне и санкциям.
Для региона, да и для всего мира в целом это сигнал о том, что Тегеран не выходит из конфликта — он перестраивается на долгую борьбу.
🇦🇲Моя Армения🇦🇲Իմ Հայաստան
Подписаться 👉@Im_Hayastan
#Иран#Хаменеи#МоджтабаХаменеи#Ноуруз#БлижнийВосток#Геополитика#Новости#МояАрмения#ImHayastan
🇱🇧🇷🇺🔥🇮🇱Ливан снова под ударом: рядом с журналистами RT упала израильская ракета
В Ливане рядом со съёмочной группой RT упала израильская ракета.
В результате удара пострадали корреспондент и оператор телеканала.
На фоне инцидента Россия потребовала от Израиля провести расследование нападения на журналистов и не допустить повторения подобных атак.
Также сообщается, что посол Израиля в России Одед Йосеф был вызван в МИД РФ после ракетного удара в Ливане.
Очередной эпизод войны на Ближнем Востоке вновь показывает, что под ударом оказываются не только военные объекты, но и журналисты, которые выполняют свою работу в зоне конфликта.
🇦🇲Моя Армения🇦🇲Իմ Հայաստան
Подписаться 👉@Im_Hayastan
#Ливан#Израиль#RT#Россия#МИД#БлижнийВосток#Журналисты#ВоенныйКонфликт#Срочно#Новости#МояАрмения#ImHayastan
🇬🇪😢🙏Грузия прощается с духовным лидером
Десятки тысяч верующих вышли на улицы Тбилиси минувшей ночью, чтобы проститься с Католикосом-Патриархом всея Грузии Илией II.
Патриарх, ушедший из жизни в возрасте 93 лет, возглавлял Грузинскую Православную Церковь с 1977 года. За десятилетия служения он стал не просто религиозным деятелем, а символом единства, веры и духовного возрождения грузинского народа.
Его эпоха — это время испытаний, но и сохранения национальной идентичности, традиций и духовных ценностей. Для миллионов грузин он был моральным ориентиром и голосом совести.
📌 Сегодня Грузия провожает не только Патриарха, но и целую эпоху.
🇦🇲 В такие моменты особенно ясно ощущается, насколько важны духовные лидеры для сохранения нации, ее веры и будущего.
🇦🇲Моя Армения🇦🇲Իմ Հայաստան
Подписаться 👉@Im_Hayastan
#Грузия#ИлияII#Православие#Церковь#Тбилиси#Кавказ#Вера#Духовность#История#МояАрмения#ImHayastan
📹‼️В сети публикуют кадры последствий падения обломков в районе Старого города Иерусалима — рядом с храмом Гроба Господня, мечетью Аль-Акса, Стеной Плачаи Армянским кварталом.
Именно поэтому здесь нужна не истерика, а точность.
На данный момент корректно говорить о падении обломков на фоне ракетной атаки и работы ПВО, а не бездоказательно утверждать, что речь идёт именно об обломке иранской ракеты.
В условиях такого конфликта в городской черте могут падать как части атакующих боеприпасов, так и обломки перехватчиков.
Но главный смысл новости не в том, чьи именно это фрагменты.
Факт в другом:
район святынь трёх религий и армянский квартал уже оказался в зоне последствий большой войны.
Когда обломки падают в Старом городе Иерусалима, это означает одно:
эскалация дошла до точки, где любой новый удар, любой сбой ПВО, любой просчёт сторон может привести к последствиям, выходящим далеко за рамки очередной военной сводки.
Это уже не вопрос громких заголовков.
Это вопрос того, насколько близко конфликт подошёл к местам, имеющим колоссальное религиозное, историческое и политическое значение для всего мира.
И напомним:
16 марта была опубликована точно такая же информация, с практический такой же формулировкой...
🇦🇲Моя Армения🇦🇲Իմ Հայաստան
Подписаться 👉@Im_Hayastan
#Иерусалим#СтарыйГород#Израиль#Иран#АльАкса#ХрамГробаГосподня#СтенаПлача#БлижнийВосток#Геополитика#ImHayastan
📹‼️В сети публикуют кадры последствий падения обломков в районе Старого города Иерусалима — рядом с храмом Гроба Господня, мечетью Аль-Акса, Стеной Плачаи Армянским кварталом.
Именно поэтому здесь нужна не истерика, а точность.
На данный момент корректно говорить о падении обломков на фоне ракетной атаки и работы ПВО, а не бездоказательно утверждать, что речь идёт именно об обломке иранской ракеты.
В условиях такого конфликта в городской черте могут падать как части атакующих боеприпасов, так и обломки перехватчиков.
Но главный смысл новости не в том, чьи именно это фрагменты.
Факт в другом:
район святынь трёх религий и армянский квартал уже оказался в зоне последствий большой войны.
Когда обломки падают в Старом городе Иерусалима, это означает одно:
эскалация дошла до точки, где любой новый удар, любой сбой ПВО, любой просчёт сторон может привести к последствиям, выходящим далеко за рамки очередной военной сводки.
Это уже не вопрос громких заголовков.
Это вопрос того, насколько близко конфликт подошёл к местам, имеющим колоссальное религиозное, историческое и политическое значение для всего мира.
И напомним:
16 марта была опубликована точно такая же информация, с практический такой же формулировкой...
🇦🇲Моя Армения🇦🇲Իմ Հայաստան
Подписаться 👉@Im_Hayastan
#Иерусалим#СтарыйГород#Израиль#Иран#АльАкса#ХрамГробаГосподня#СтенаПлача#БлижнийВосток#Геополитика#ImHayastan