Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
🔎С Днём авиадиспетчера!
📌Сегодня редакция нашего канала поздравляет всех, кто отвечает за организацию воздушного движения в России.
Работа диспетчерских служб не прекращается ни на минуту — именно благодаря вам обеспечиваются безопасность и регулярность полётов по всей стране.
⏺Авиадиспетчеры круглосуточно контролируют воздушные трассы, направляют экипажи самолётов и вертолётов, помогая им безопасно проходить тысячи километров неба над нашей Родиной.
⏺Управление воздушным движением требует огромной подготовки, самоотверженности и постоянного совершенствования навыков.
⏺Без профессионализма, прочной учебной базы вузов Росавиации и мудрых советов опытных ветеранов невозможно представить стабильную работу гражданской авиации России.
📌Редакция нашего канала поздравляет всех работников служб управления воздушным движением за верность профессии и добросовестный труд! Вы заслуживаете глубочайшего уважения за своё мастерство и преданность делу.
Лёгкое небо
#aviation#ATC#Россия
✈️Как в 1930-х появилась инфраструктура авиации
📌К началу 1930-х самолёты уже были надёжными, но летать по расписанию не могли. Аэродромы — грунтовые поля, навигация — по железным дорогам и рекам, прогноз погоды — устаревшие телеграммы, управление движением — отсутствовало
🔵На протяжении десятилетия появилось всё сразу. Бетонные ВПП — когда тяжёлые лайнеры стали увязать в грунте. Радиомаяки — когда авиакомпании потеряли слишком много машин из-за потери ориентировки в облаках. Авиационная метеослужба с регулярными прогнозами — предшественники современных METAR. В 1935 году в Ньюарке открылся первый центр управления воздушным движением: диспетчеры двигали фишки по карте, отслеживая борта по докладам пилотов
🔵К 1940 году всё работало вместе: брифинг погоды, бетонная полоса, радиолуч, диспетчер, заход по приборам. Самолёты 1930-х давно забыты. Инфраструктура, созданная тогда, в развитом виде работает до сих пор
⬅️Полная версия — на сайте
Лёгкое небо × SkyMoments
#aviation#LN_EDU#история#ATC#навигация
Всем привет! На связи диспетчер Катя
⏺Почему выбор пал именно на эту профессию?
Я была убеждена, что буду развиваться в медицинской среде, очень хотела, прямо таки мечтала стать стоматологом-ортодонтом. Однако, за две недели до экзаменов в девятом классе, я приняла кардинально иное решение: "
Пойду в авиацию
".
⏺Как складывался твой путь в авиации?
Изначально я думала стать пилотом, и в моем классе, к слову, было еще два парня, которые хотели выбрать именно эту профессию. В 11-м классе, здраво размышляя, я чуть скорректировала вектор и определила стать авиадиспетчером. С тех пор я ни разу не пожалела. Я поступила в ВУЗ без каких-либо проблем, у меня был высокий балл по ЕГЭ, и самое главное — желание учиться новому. В моей семье нет никого из авиации, поэтому я иду своей дорогой.
⏺Что ты можешь сказать о профессии диспетчера?
Однозначно, в ней я нашла свои черты характера: они очень хорошо раскрываются именно на этой работе. В ней идеально сочетаются как четкое следование правилам, так и творчество. И, конечно, большая любовь к самолетам.
⏺Посоветовала бы ты молодому поколению идти в эту профессию?
Я убеждена, что каждый должен принимать решение самостоятельно. Если вам по душе авиация, то старшее поколение с удовольствием будет делиться с вами информацией и давать ценные советы. От вас требуется только трудолюбие и готовность постоянно учиться.
_____
Дорогие подписчики, у вас есть уникальная возможность задать Кате вопросы в комментариях, на которые она ответит в следующем после этой рубрики 🔥
Лёгкое небо
#aviation#ДиспетчерКатя#interview#ATC
📌CPDLC — когда пилоты пишут, а не говорят
Радиосвязь — привычный способ общения пилота и диспетчера. Но в некоторых зонах мира, особенно над океаном, она заменяется цифровой связью — CPDLC (Controller-Pilot Data Link Communications).
🧠 Что это такое?
CPDLC — это обмен короткими текстовыми сообщениями между экипажем и диспетчером. Выглядит как мессенджер в кабине:
✈️ диспетчер отправляет сообщение — «Climb FL380»
👨✈️ пилот нажимает «Wilco» (выполню) — и всё, никаких переговоров по радио.
🛰Зачем это нужно?
⏺На эшелонах и в океанических зонах голосовая связь часто недоступна или перегружена.
⏺CPDLC уменьшает нагрузку на радиоэфир и исключает ошибки из-за акцентов, помех или заговорённости частот.
⏺Все сообщения фиксируются в системе — исключён фактор «не так понял».
💬Как это работает?
📌CPDLC используетсяпочти по всему миру, исключая несколько стран
Пилот и диспетчер подключаются к одной и той же системе, и весь обмен происходит через спутник или наземную станцию. Занимает это несколько секунд, а результат — высокая точность и спокойствие в эфире.
❓Интересный факт
Некоторые авиакомпании уже полностью перешли на CPDLC в дальнемагистральных рейсах, а в Европе в будущем планируется обязательное использование в верхнем воздушном пространстве. Так что «поговорить» по радио получится не всегда
🔔 Пишите в комментариях: знали ли вы, что у пилотов есть свой «авиа-мессенджер»?
Легкое Небо
#ATC#pilot#CPDLC#communications
🤨🤨🤨 מגדל הפיקוח בשדה התעופה ברבנק הוליווד נותר ללא פקחים במשך שעות עקב השבתת הממשל!!
כן כן מה ששמעתם. מגדל הפיקוח של נשדה התעופה ברבנק הוליווד (BUR) נותר ללא פקחי טיסה במשך שעות, לאחר שכלל הצוותים לא התייצבו לעבודה בעקבות השבתת הממשל הפדרלי, שגרמה לעובדי ה-FAA לעבוד ללא שכר.
לפי רשות התעופה הפדרלית (FAA), המגדל הפסיק לפעול בשעה 16:15 ונותר סגור עד 22:00. בזמן זה, השליטה בתנועת המטוסים, המראות ונחיתות, עברה לניהול מרחוק על ידי מרכז הבקרה האזורי של Southern California TRACON שבסן דייגו.
בהודעת ה-FAA נמסר:
בעקבות המחסור בכוח אדם שנוצר עקב ההשבתה, נאלצנו להאט את התנועה האווירית בחלק מהשדות כדי לשמור על בטיחות.
⁉️מדובר באירוע נדיר במיוחד במרחב אווירי סואן כמו לוס אנג'לס, שמעיד על ההשפעה הגוברת של השבתת הממשל על תעבורת האוויר בארה"ב. שדה התעופה ברבנק אינו שדה גדול במיוחד ובשנת 2024 עברו בו קצת יותר מ-6.5 מיליון נוסעים. לשם השוואה, בנתב"ג, בזמן מלחמה, עברו בשנת 2024 ובשנת 2023, כמעט 14 מיליון נוסעים וקצת יותר מ-20 מיליון נוסעים בהתאמה. בשנה האחרונה הנורמלית שהייתה פה, 2019, עברו קצת יותר מ-24 מיליון נוסעים.
ℹ️קצת רקע על השבתת הממשל
השבתת הממשל (Government Shutdown) בארה"ב החלה ב-1/10, לאחר שהקונגרס האמריקאי לא הצליח לאשר תקציב חדש או הארכה זמנית למימון הממשל הפדרלי. המשמעות - מאות אלפי עובדים ממשלתיים הוצאו לחופשה כפויה ללא שכר, בעוד עובדים חיוניים, כמו פקחי טיסה ועובדי ביטחון, נדרשים להמשיך לעבוד ללא תשלום עד לסיום המשבר.
בתחום התעופה, חלק גדול מעובדי ה-FAA וה-TSA נפגעו:
⛔לפי חלק מהדוחות – כ-11,322 מתוך כ-44,829 עובדי ה-FAA הוצאו לחופשה כפויה.
⛔13,294 מתוכם – פקחי תנועה אווירית – נדרשים להמשיך בעבודתם ללא שכר עד שהממשלה תחזור לפעולה.
⛔במשרד התחבורה האמריקאי התריעו כי בכמה נמלי תעופה נרשמו חוסרים של עד 50% בצוותי הפיקוח, מה שהוביל לעיכובים, האטת קצב נחיתות והמראות, ובמקרים חריגים – כמו בבורבנק – להשבתה מלאה של מגדל הפיקוח.
https://t.me/AviationNewsIL/8053
#בורבנק#FAA#השבתהממשל#ארהב#פיקוחטיסה#ATC