TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки

TGINSIGHT SIMILAR POSTS

Најди сличен содржај

Изворен канал @pythonotes · Post #121 · 20 јул.

Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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

Резултати

Пронајдени 2 слични објави

Пребарај: #aviatur

当前筛选 #aviatur清除筛选

✈️🌍 Aviatur: Приход Qatar Airways и Emirates оживляет авиарынок Колумбии Колумбийская туристическая компания Aviatur считает, что выход на рынок страны авиакомпаний Qatar Airways и Emirates значительно улучшает перспективы авиационного сектора. Это расширяет возможности для пассажиров, предлагая более конкурентоспособные тарифы, повышенный комфорт и качественное обслуживание. Ранее, в ноябре 2024 года, сообщалось, что Qatar Airways получила разрешение на выполнение ежедневных рейсов из Дохи в Боготу, начиная с 2025 года. Это предложение ориентировано на пассажиров, ищущих роскошные перелеты и удобные стыковки с регионами Ближнего Востока, Азии и Африки. По мнению представителей туристической отрасли, такие изменения способствуют росту международного туризма и открывают новые горизонты для колумбийских путешественников. #Aviatur#QatarAirways#Emirates#Колумбия#Авиаперевозки#Туризм#МеждународныеРейсы 👉Всегда свежие новости о странах Латинской Америки!

🇨🇴 Колумбия: Глава Aviatur назвал трудовую реформу шансом для обновления туристической отрасли Президент крупнейшей туристической группы Колумбии Aviatur, Жан Клод Бессудо, прокомментировал трудовую реформу, предложенную президентом Петро, подчеркнув, что она открывает новые возможности для отрасли — при условии грамотного внедрения. Откуда растут корни реформы Предложенная трудовая реформа — часть более широкой повестки президента Петро по построению социально ориентированной экономики, в которой приоритет отдается правам работников, борьбе с неформальной занятостью и повышению социальной защиты. Туристическая отрасль, как один из крупнейших работодателей в сфере услуг, неизбежно попадает в фокус изменений. Позитивные стороны реформы • Установление 8-часового рабочего дня придаст туристическому сектору больше социальной устойчивости и привлекательности как работодателя. • Повышение стандартов труда укрепит доверие со стороны работников и поможет привлечь молодых специалистов. • Новый подход создаёт стимул для модернизации бизнес-моделей, внедрения технологий и более эффективного управления персоналом. Вызовы и рекомендации Бессудо отметил, что для небольших агентств важно получить поддержку на переходный период, чтобы они могли адаптироваться без ущерба для клиентов и сотрудников. Он призвал к гибкому регулированию, которое позволит сохранить рабочие места и одновременно двигаться к более справедливым условиям труда. «Мы должны видеть в реформе не только трудности, но и потенциал для роста и перемен. Это шанс пересобрать туристическую отрасль в более устойчивом и прогрессивном формате» — заявил Бессудо. #Колумбия#Aviatur#ЖанКлодБессудо#Туризм#РеформаПетро#ПозитивныеИзменения#ЛатинскаяАмерика#БизнесВЛатаме#ТрудоваяРеформа 👉Всегда свежие новости о странах Латинской Америки!