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

Резултати

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

Пребарај: #filt2025

当前筛选 #filt2025清除筛选

Культурный пульс Латинской Америки: что волнует, вдохновляет и объединяет Латинская Америка — это не только природа и гастрономия, но и яркая культурная сцена, которая задаёт вопросы времени, исследует новые формы искусства и не боится говорить о самом личном. Вот несколько ярких событий и тенденций: 👉FILT 2025 — литература, которая помогает осмыслить прошлое, настоящее и будущее Девятый фестиваль FILT (Festival Internacional de Literatura Tucumán — 25-27 июля) собирает в Аргентине ведущих авторов современной литературы. Среди участников — Ариана Харвич и Мария Морено, чьи произведения известны своей смелой тематикой и новаторской формой: Ариана Харвич — аргентинская писательница, известная своими яркими романами о семейных и личных отношениях; её произведения удостоены международных премий и переведены на множество языков. Мария Морено — аргентинская журналистка и писательница, отмеченная национальными наградами за вклад в литературу и журналистику, автор известных эссе и хроник. Программа фестиваля обещает дискуссии о роли слова в эпоху перемен, встречи с авторами, лекции и презентации новых книг. FILT закрепляет статус одного из ключевых литературных событий региона. 👉Латиноамериканский след на Art Basel 2025 На крупнейшей арт-ярмарке мира Art Basel (Швейцария) Латинская Америка заявила о себе: ▪️MALBA (Буэнос-Айрес) среди ведущих музеев-участников, ▪️ коллекционеры из Бразилии вошли в топ-15 крупнейших покупателей, ▪️ чилийская художница Сесилия Викунья — среди самых востребованных авторов. Сесилия Викунья - поэтесса, художница, активистка, одна из самых известных представительниц латиноамериканского искусства. Она известна своими «precarios» — хрупкими инсталляциями из нитей, природных и найденных предметов, которые отражают темы памяти, утраты и связи человека с природой. Её работы выставлялись в MoMA, Tate Modern, Guggenheim и на Венецианской биеннале, а теперь — и среди лидеров продаж Art Basel. 👉Entrá — театр как пространство исцеления Фестиваль Entrá в Аргентине (который прошел с 3 по 9 июля) продолжает удивлять актуальностью своих постановок. Одна из премьер — пьеса «Respondé que ya casi es otoño (Curar se hace de a dos)»/«Ответь, ведь уже почти осень (Исцеление — дело двоих)» драматурга Оччи Рамаччотти. О чем: Художница Алехандра, проживая последние недели, пишет картины, а рядом с ней — Лука, парень, который учится читать. Вместе они находят поддержку и тепло, показывая: лечиться — значит быть вдвоём. Спектакль исследует темы прощания, заботы, утраты и человеческой связи, превращая сцену в пространство, где обсуждаются самые интимные вопросы. Зрители отмечают, что театр фестиваля стал своего рода защитой искусства и человеческой души в непростые времена. Латинская Америка вновь напоминает: культура здесь — это не просто развлечение, а зеркало общества и вызов к размышлению. #ЛатинскаяАмерика#Культура#FILT2025#ArtBasel#Театр#FestivalEntrá#Искусство#Литература#НовостиКультуры 👉Всегда свежие новости о странах Латинской Америки!