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

Резултати

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

Пребарај: #euinkazakhstan

当前筛选 #euinkazakhstan清除筛选
EU in Kazakhstan 🇪🇺🇰🇿

@euinkazakhstan · Post #451 · 20.09.2023 г., 08:05

EU Ambassador to Kazakhstan Kestutis Jankauskas visited Pavlodar Region to take part in the industrial tour of two ERG facilities and meet with Deputy Akim of the Pavlodar Region Aizada Kurmanova. During the industrial tour, Ambassador visited Pavlodar Aluminium Plant and Kazakhstan Electrolysis Plant. The trip was initiated by the BeNeLux Chamber of Commerce. **** Еуроодақтың Қазақстандағы Елшісі Кестутис Янкаускас Павлодар өңіріне ERG мекемесінің екі зауытынының өндірістік турына қатысып, Павлодар облысы әкімінің орынбасары Айзада Құрмановамен кездесу үшін іс-сапармен келді. Өндірістік тур барысында Елші Павлодар алюминий зауыты мен Қазақстан электролиз зауытынының қызметімен танысты. Бұл сапар BeNeLux Сауда-өнеркәсіп палатасының бастамасымен ұйымдастырылды. #EUinKZ#EUinKazakhstan

EU in Kazakhstan 🇪🇺🇰🇿

@euinkazakhstan · Post #243 · 06.02.2023 г., 04:26

Еуропалық Одақ пен Қазақстан арасындағы дипломатиялық қатынастардың орнатылғанына 30 жыл толды. Осыған орай Еуроодақтың Қазақстандағы Елшісі Кестутис Янкаускастың Jibek Joly телеарнасына берген сұхбатын тамашалыңыздар. 🇪🇺🇰🇿 Евросоюз и Казахстан отметили 30-летие дипломатических отношений. Смотрите интервью Посла Европейского Союза в Казахстане Кестутиса Янкаускаса телеканалу Jibek Joly. #EUKZ30#EUinKazakhstan#EUinKZ

EU in Kazakhstan 🇪🇺🇰🇿

@euinkazakhstan · Post #205 · 10.01.2023 г., 07:15

Биыл Еуропалық Одақ пен Қазақстан арасындағы дипломатиялық қатынастардың орнатылғанына 30 жыл толады. Қазақстан мен Еуропалық одақтың серіктестігі республика тәуелсіздік алған сәттен басталған. 1993 жылы 2 ақпанда дипломатиялық қатынастарды айқындайтын келісімге кол қойылып, сол жылы Брюссельде Қазақстанның Еуропалық Одақтағы Өкілдігі ашылған болатын. Ал 1994 жылы Алматы қаласында Еуропалық Одақтың Қазақстандағы Өкілдігі өз жұмысын бастап, 2007 жылы кеңсе Астана қаласына ауыстырылды. 🇪🇺🇰🇿 This year marks 30th anniversary of diplomatic relations between the European Union and Kazakhstan. Kazakhstan and the European Union started their close partnership since the country's independence. On 2 February 1993 the parties signed an agreement that established official diplomatic relations between the EU and Kazakhstan. In the same year Kazakhstan opened its office in Brussels. In 1994, the EU Delegation to Kazakhstan began its work in Almaty, and in 2007 the office was moved to Astana. #EUKZ30#EUinKZ#EUinKazakhstan

EU in Kazakhstan 🇪🇺🇰🇿

@euinkazakhstan · Post #1158 · 11.02.2025 г., 10:14

International Day of Women and Girls in Science – 11 February 🔬🌍 Today, we celebrate the achievements of women and girls in science and highlight the importance of gender equality in research and innovation. The EU is committed to empowering women in STEM and fostering an inclusive environment where talent knows no boundaries. **** 11 ақпан – Ғылымдағы әйелдер мен қыз балалардың халықаралық күні 🔬🌍 Бүгін біз ғылымдағы әйелдер мен қыз балалардың жетістіктерін мойындай отыра, зерттеулер мен инновациялардағы гендерлік теңдіктің маңыздылығын атап өтудеміз. Еуроодақ STEM саласындағы әйелдердің мүмкіндіктерін кеңейтуге және дарынды адамдардың шекарасын білмейтін инклюзивті ортаны қалыптастыруға ұмтылады. #EU4Science#WomenInSTEM#GirlsInScience#EUinKazakhstan

EU in Kazakhstan 🇪🇺🇰🇿

@euinkazakhstan · Post #1452 · 12.08.2025 г., 07:06

🌍 Happy International Youth Day! Today, we celebrate the energy, creativity, and leadership of young people in Kazakhstan and around the world. The European Union believes in the power of youth to build inclusive, sustainable, and prosperous societies. Thank you to all the inspiring young voices we have met through our programmes and events - you are shaping the future today! * 🌍 Халықаралық жастар күні құтты болсын! Бүгін біз Қазақстандағы және әлемдегі жастардың жігерін, шығармашылығын және көшбасшылығын атап өтудеміз. Еуропалық Одақ жастардың әділ, тұрақты және гүлденген қоғам қалыптастырудағы әлеуетіне сенеді. Бағдарламаларымыз бен жобаларымызда жолыққан жігерлі жастарға алғысымыз шексіз - сіздер болашақты бүгін қалыптастырып жатырсыздар! #InternationalYouthDay#EU4Youth#EUinKazakhstan#YouthEmpowerment