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

Резултати

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

Пребарај: #pekinghotel

当前筛选 #pekinghotel清除筛选
Отель «Пекин», 📍Москва

@hotelpekingmoscow · Post #256 · 26.02.2022 г., 10:34

Новый год – это время волшебства, подарков, оживших сказок, самых счастливых эмоций и радостных улыбок. Тысячи разноцветных огней освещают улицы города, наряженные ели, удивительные и необычные украшения создают особую атмосферу новогоднего праздника. В это время каждый может почувствовать себя героем сказки, поверить в волшебство и загадать свои самые заветные желания. Команда отеля дарит каждому гостю волшебную открытку, отправляйте её тому, кого хотите поздравить с праздниками и вместе с открыткой к Вашим друзьям и близким отправится частичка счастья, добра и волшебства!🎄 ⠀ #отельпекинмосква#hotelpekingmoscow#pekinghotel#newyear #новыйгод2022#пекинмосква #гостиницамосква

Отель «Пекин», 📍Москва

@hotelpekingmoscow · Post #280 · 08.03.2022 г., 05:06

Дорогие, милые дамы, Команда отеля Пекин поздравляет вас с Международным женским днём! Желаем вам чудесных дней, наполненных радостными событиями, красивыми словами, любовью и душевностью. Пусть ваши желания исполняются всё чаще, близкие окружают вас теплом и нежностью, заботой и безграничным вниманием. Счастья вам, прекрасные дамы, и пусть оно не заканчивается! Мы всегда ждём вас в отеле Пекин! #гостиницапекинмосква#пекинмосква#8марта#hotelpekingmoscow#pekinghotel#pekinghotelmoscow

Отель «Пекин», 📍Москва

@hotelpekingmoscow · Post #254 · 26.02.2022 г., 10:24

Зима — большая волшебная сказка. В ней три главы и бесконечное число чудес на каждой страничке. В каждом слове этой волшебной истории живёт по маленькому чуду! Декабрь — «О том, как чувствовать волшебство» Январь — «О том, как придумать волшебство самому» Февраль — «О том, что волшебство — в тебе» ⠀ Позволь себе окунуться в мир волшебства, бронируй новогодние каникулы на сайте: www.hotelpeking.ru либо по телефону: +7 495 980 59 95 и получай скидку от 10%💫 ⠀ #hotelpekingmoscow#pekinghotel#moscow#newyear#holidays#отельпекинмосква#гостиницапекинмосква

Отель «Пекин», 📍Москва

@hotelpekingmoscow · Post #57 · 25.02.2022 г., 23:23

С праздником Великой Победы! Мирного неба, ясного солнца, доброй жизни вокруг! Светлая память героям войны и их подвигам! #9мая#9мая2021#76летпобеды#pekinghotel#hotelpekin#hotelpeking#pekinghotelmoscow

Отель «Пекин», 📍Москва

@hotelpekingmoscow · Post #86 · 26.02.2022 г., 01:33

1 июня отмечается Международный день защиты детей! Задача каждого взрослого - сделать детство счастливым и беззаботным. А мы #pekinghotelteam делаем все, чтобы нашим маленьким гостям и их родителям было уютно и комфортно в нашем отеле. Для малышей у нас есть: ✅детские кроватки ✅стульчики для кормления ✅игрушки ✅подогреватели и стерилизаторы для бутылочек ✅ванночки для купания и даже горшок! Все, что нужно для отличного отдыха! Ждем вас в отеле “Пекин”! Москва, Большая Садовая, д.5 #hotelpeking#pekinghotel#hotelpekin#pekinghotelmoscow#гостиницапекин#гостиницапекинмосква#отдыхсдетьми#семейныевыходные

Отель «Пекин», 📍Москва

@hotelpekingmoscow · Post #59 · 25.02.2022 г., 23:43

Тариф “Привилегии особого выбора” - для тех, кто ценит комфорт класса “люкс” во всем. Для наших гостей: ✅Проживание в номере категории «люкс»* ✅Ранний заезд, после 11.00 ✅Поздний выезд, до 16.00 ✅Комплемент от отеля ✅Парковочное место для вашего автомобиля. Бронируйте на официальном сайте www.hotelpeking.ru Москва, Большая Садовая, д.5 #отельпекинмосква#гостиницапекин#отельпекинмосква#номерлюкс#стандартныйномер#гостиницапекинмосква#pekinghotelmoscow#hotelpekingmoscow#hotelpekin#pekinghotel

Отель «Пекин», 📍Москва

@hotelpekingmoscow · Post #58 · 25.02.2022 г., 23:33

Длинные майские праздники закончились и впереди нас снова ждут рабочие дедлайны, спешка, деловые встречи. Легко настроиться на рабочий лад помогают мысли о предстоящем путешествии. Почему бы не устроить себе мини-отпуск в самом центре столицы? Забронируйте проживание в отеле “Пекин” и окунитесь в весеннюю атмосферу одного из самых красивых городов мира. Театры, концертные залы, музеи, шикарные парки - все это в шаговой доступности от отеля. Живите в “Пекине”, наслаждайтесь Москвой! Бронируйте номера по телефону 8 800 250 05 50 или на официальном сайте по ссылке в шапке профиля. Москва, Большая Садовая, д.5 #отельвцентремосквы#забронироватьгостиницу#отельпекин#гостиницапекин#гостиницапекинмосква#пекинотель#pekinghotelmoscow#hotelpekingmoscow#pekinghotel

Отель «Пекин», 📍Москва

@hotelpekingmoscow · Post #37 · 25.02.2022 г., 22:03

Апартаменты “Золотой Сад” просторный двухкомнатный номер высшей категории, состоящий из большой спальни с двуспальной кроватью размера King size, гостиной с мягкой мебелью, обеденной зоны с кухонным уголком. Идеальный вариант для размещения семьи. Номер оснащен всем необходимым для длительного проживания, а дизайнерское решение в пастельных тонах способствует созданию уютной домашней атмосферы. Вся мебель выполнена из натурального дерева. В ванной комнате: душевая кабина, биде, фен, косметические принадлежности, махровый халат и тапочки. Номер оборудован мини-кухней, чайной станцией, удобной обеденной зоной. Бронируйте на официальном сайте www.hotelpeking.ru #забронироватьгостиницу#стандартныйномер#номерлюкс#гостиницапекин#отельпекин#отельпекинмосква#hotelpeking#pekinghotelmoscow#pekinghotel#hotelpekingmoscow