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

Резултати

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

Пребарај: #snowboarding

当前筛选 #snowboarding清除筛选

Уже второй год подряд приезжаю в Японию на FWTQ 4* и снова залетаю на тумбочку В этом году мне особенно понравился новый спот Godzilla - здесь много возможностей и очень интересный рельеф! Second year in a row I'm coming to Japan for the freerideworldtour_jp and finishing on the podium This year I really enjoyed the new venue called Godzilla - so many options and such an interesting terrain! Big thanks to the organizers and my partners for the support: kant_sport lapochka.drinks whitelabgo fluxbindings #snowboarding#freerideworldqualifier

Закрываю свой рабочий зимний сезон 25–26 🙌🏻 @freeriderussia Он получился очень насыщенным: много катания, разные курорты и, самое главное, — классная компания в виде вас 🤍 Но это не значит, что мой сезон как райдера заканчивается 😏 Уже сегодня вечером вылетаю на Эльбрус на FWQ Расслабляться рано — есть цели и желание побороться 💪🏼 @fwtq_russia Дальше — небольшой перерыв: лечу в Турцию, в кэмп «Моё небо», учиться летать на параплане 🙌🏻 Давно хотел это попробовать. После возвращаюсь в Приэльбрусье — закрывать сезон уже не как гид, а как райдер: кататься с друзьями и снимать для вас. Надеюсь, со снегом повезёт 🤞🏻 А дальше — новый этап: с 2 по 18 мая едем с Жекой и Ваней в Непал, планируем трекинг вокруг Аннапурны 🏔️ Кстати, в эту поездку можно поехать с нами — пиши в личку, расскажу все подробности 🙌🏻 Фото: @ksusha_lagunova🎞️ #snowboarding#freeride#rosakhutor#сноубординг#краснаяполяна

Последний месяц в Сибири я катался в новом термобелье от компании «Следопыт». Честно — понравилось: оно действительно работает и согревает даже в самые сильные морозы (заявлено до −35). Не стесняет движения, приятно сидит и стильно выглядит — в общем, рекомендую 🙌🏻 Честно признаться, такое ощущение, что в последнее время я живу свою лучшую жизнь: все идеи реализуются в кратчайшие сроки. Путешествия, друзья, сноубординг и вертолёты — это просто мечта! 😍 Артикул WB: WW267064 Больше ассортимента на сайте: https://clck.ru/3RCmsk #snowboarding#heliboarding#freeride#siberia#сноубординг

В конце января я выиграл этап 4* FWQ в Японии по сноуборду! Никто раньше из России не выигрывал FWQ4* в мужском сноуборде. Это самые рейтинговые квалификационные соревнования в мире! 🏔️Хакуба — один из самых популярных горнолыжных курортов Японии, во время зимних Олимпийских игр 1998 года в Нагано здесь впервые дебютировали соревнования по сноуборду, тем самым став олимпийской дисциплиной. Но еще это и Мекка фрирайда — в среднем там выпадает 11 метров снега за сезон. 🥇 Igor Ilinykh RUS 81.00 @igor_ilinykh 🥈 Haruki Takeuchi JPN 79.33 @harukitakeuchi 🥉 Juan Tadeo ARG 76.67 @tade_leslie #япония#фрирайд#fwq#сноуборд#freeriderussia#snowboarding

Один день из съемок фрирайд фильма🎥🍿 Не всегда все идёт гладко, учитесь на чужих ошибках☝🏼 В главных ролях: @andrey_moskvin@action_brothers #фрирайд#сноубординг#краснаяполяна#snowboarding#krasnayapolyana#rosakhutor#freeride

Лучший день в компании друзей🤘🏼 #snowboarding#freeride#rosakhutor#krasnayapolyana#сноубординг#фрирайд#розахутор#краснаяполяна

В поисках свежей линии⚡️Новая Зеландия, фрирайд и хелиски #snowboarding#freeride#heliski#newzealand#сноубординг#фрирайд#новаязеландия#хелиски

🚩Желаю всем такого же прекрасного и раннего открытия зимнего сезона! #heliboarding#methvenheliski#newzealand#snowboarding #heliskiing#nz#хелиски#новаязеландия#сноубординг

Путешествие по Новой Зеландии, часть III🇳🇿 Переезд на Южный остров здесь суровая природа, горы и океан. Мы встретили китов, тюленей, успели посерфить и отдохнуть. А затем — открытие сезона на Mt Hutt: заснеженные дороги, уютный дом и первый день катания!🏂 #newzealand#methven#mthutt#kaikoura#snowboarding#whalewatching#новаязеландия#киты#сноубординг

Сколько стоит катание в Новой Зеландии?🇳🇿 Пиши если хочешь с нами в следующий году🏂🚁🏔️ #newzealand🇳🇿#newzeland#snowboarding#heliski#heliboarding#adventure#methvennz#nzlife#сноубординг#новаязеландия#хелиски

12
ПретходнаСтраница 1 од 2Следна