Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
✈️Сегодня поздравляем S7 Airlines с 25-летием представительства в Иркутске
За эти годы вы стали не просто надёжным перевозчиком для пассажиров, но и ключевым участником транспортной системы региона. Аэропорт Иркутска гордится тем, что является важным трансферным узлом для вашей авиакомпании, — это подтверждает нашу общую значимость в сфере воздушных перевозок.
Благодаря вашему стремлению к развитию из Иркутска регулярно открываются новые направления, которые делают путешествия пассажиров ещё более удобными и разнообразными.
Желаем дальнейших успехов, процветания и новых высот в вашей деятельности 💙
#АэропортИркутск#S7Airlines
✈️S7 Airlines сэкономил 1,7 млрд рублей на перелётах
📌На форуме Buying Business Travel Forum 2026 директор по продажам S7 Airlines Александр Елфимов подвёл итоги работы с корпоративными клиентами
🔵По итогам 2025 года их доля в пассажиропотоке достигла 15%, а экономия компаний по корпоративной программе составила 1,7 млрд рублей – на 14% больше, чем годом ранее
🔵В числе самых востребованных деловых направлений – Новосибирск – Иркутск, Москва – Новосибирск и Новосибирск – Благовещенск. По запросу бизнеса авиакомпания увеличила частоту рейсов из Новосибирска в Братск, Певек, Хабаровск, Магадан и Южно-Сахалинск
🔵Самой популярной услугой стало предварительное бронирование мест – спрос на неё вырос более чем вдвое. Рекорд сезона – 88 перелётов за год у одного участника программы S7 Corp
⬅️А вы пользуетесь корпоративными тарифами в командировках?
Лёгкое небо
#aviation#news#S7Airlines
💙 Делимся с вами радостью: победительнице улыбнулась удача в нашем юбилейном розыгрыше! Сертификат на перелет по всей маршрутной сети авиакомпании S7 Airlines нашел свою обладательницу, подарив ей возможность отправиться в незабываемое путешествие.
Поздравляем победительницу и благодарим за участие, теплые слова и искренние эмоции, которыми она поделилась с нами! Нам было очень приятно видеть столько заинтересованных и позитивных людей, отмечающих вместе с нами юбилейные даты.
Розыгрыш, посвященный 100-летию Иркутского аэропорта и 25-летию представительства авиакомпании S7 Airlines в Иркутске, стал еще одним подтверждением того, как много значат для нас наши пассажиры и партнеры. Мы ценим вашу поддержку и обещаем радовать новыми интересными акциями и розыгрышами в будущем.
💙 Следите за новостями в наших соцсетях и участвуйте в предстоящих розыгрышах и конкурсах!
#АэропортИркутск
#S7Airlines
#Розыгрыш
✈️Цифровые сервисы S7 Airlines вошли в «белый список»
📌Сайт и мобильные приложения S7 Airlines включены в специальный перечень ресурсов, доступ к которым сохранится даже в случае ограничений мобильного интернета. Это гарантирует, что авиакомпания останется на связи с пассажирами в любой ситуации.
🔵Речь идёт о полном цикле цифрового взаимодействия: от бронирования билетов на официальном сайте до работы мобильных приложений и систем в аэропорту. Это позволит стабильно проводить регистрацию на рейсы и оформлять посадку на борт без задержек и технических сбоев.
🔵В компании подчеркнули, что сделали всё необходимое для стабильной работы сервисов, чтобы пользователи не ощутили разницы в доступе к услугам вне зависимости от внешних условий.
Лёгкое небо
#aviation#news#S7Airlines#Россия
✈️S7 Airlines ужесточила правила съемки для пилотов
📌S7 Airlines в начале февраля 2026 года ввела новые запреты для экипажей: пилотам запрещено смотреть видео, слушать музыку и аудиокниги на любых этапах полёта, а съёмка фото и видео запрещена при рулении, взлёте и посадке
🔵Ранее режим «стерильной кабины» действовал только до высоты 3000 м
🔵Изменения связаны со скандалом декабря 2024 года, когда командир рейса Южно-Сахалинск – Новосибирск смотрел гонку «Формулы-1» на планшете во время посадки и выложил фото в соцсети
🔵Инцидент привлёк проверку Западно-Сибирской прокуратуры. Теперь S7 привела свои правила к общемировому стандарту – аналогичные запреты давно действуют в «Аэрофлоте», Lufthansa и американских авиакомпаниях
Лёгкое небо
#aviation#news#S7Airlines#Россия
✈️S7 Training — крупнейший авиационный учебный центр в СНГ!
Мы продолжаем говорить об 💚, на очереди база авиакомпании, расположенная в Подмосковье, селе Битягово.
S7 Training — это ведущий учебный центр авиакомпании S7 Airlines и крупнейшая база подготовки авиационного персонала в СНГ. Здесь проходят обучение пилоты, бортпроводники, инженеры и другие специалисты авиационной отрасли.
✈️ Что делает S7 Training лидером в области авиационного образования?
🛑Современные тренажёры: в центре установлены самые передовые полнофункциональные авиасимуляторы Airbus, Embraer и Boeing, позволяющие максимально точно имитировать полётные условия.
🛑Международные стандарты: все программы соответствуют требованиям ICAO, что обеспечивает высокое качество подготовки.
🛑У курсантов появляется возможность проживать на базе, в отличие от других учебных центров.
🌍 Центр мирового уровня
S7 Training обслуживает не только сотрудников Сибири, но и специалистов других российских и международных авиакомпаний. Это подтверждает высокий уровень доверия и признание на авиационном рынке.
🔹 А вы знали о S7 Training раньше?
Совсем скоро будет много рассказов о базе, эксклюзивных фото и видео, а также интервью с будущим пилотом, который обучается на базе в данный момент
🔥
Лёгкое небо
#aviation#legkoenebo#S7TRAINING#S7Airlines
✈️Знаете ли вы, что цвета S7 взяты из космоса?
📌В новом брендбуке S7 Airlines сократила палитру вдвое. Но интереснее не количество, а источник: все 8 цветов команда взяла с настоящего метеорита
🔵Всё началось с новости об упавшем на Землю космическом обломке. По пути сквозь атмосферу он окислился и частично сгорел, но сам по себе оказался неожиданно красивым
🔵Серо-зелёные, синие, тёмные оттенки – это именно то, что нужно футуристичному и технологичному бренду. Команда связалась с учёными, изучавшими объект, и попросила прислать фотографии
🔵 Результатом стала палитра из 8 цветов от глубокого Night sky до фирменного Lime. Каждый оттенок – это точная выборка с фотографий реального космического объекта. Не метафора и не маркетинговый приём, а буквальная документация материала, прилетевшего из-за пределов атмосферы, по истине удивительно
⬅️Как вам такой подход к дизайну – это профессионализм или просто красивый маркетинг?
Лёгкое небо
#aviation#S7Airlines#дизайн#бренд
✈️ Учебный самолёт «Танго» перешёл на второй этап сертификации
📌24 февраля Авиарегистр России приступил к этапу «Макет» в сертификации учебно-тренировочного самолёта «Танго» ограниченной категории. Работы ведёт Макетная комиссия, утверждённая Росавиацией
🔵На этом этапе специалисты оценивают сертификационный базис проекта, виды и объёмы предстоящих работ, перечень комплектующих и предварительное соответствие конструкции требованиям. По итогам будет оформлен протокол с комплексной оценкой
🔵При выявлении несоответствий разработчик устранит их, после чего можно будет переходить к стадии сертификационных испытаний
🔵Совсем скоро «Танго» может стать новым отечественным учебным самолётом
⬅️ До последнего не верится, что 2,5 года назад я бывал в сборочном цеху и беседовал с конструкторами этого самолёта
Лёгкое небо
#aviation#news#Россия#Танго#S7Airlines