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 слични објави

Пребарај: #nengoflow

当前筛选 #nengoflow清除筛选

Музыкная неделя Латинской Америки: Latin Grammy 2025, новые релизы и громкие премьеры 1️⃣Latin Grammy 2025: Bad Bunny и Ca7riel & Paco Amoroso — главные триумфаторы года В Лас-Вегасе прошла 26-я церемония Latin Grammy, где были отмечены лучшие релизы, вышедшие с июня 2024 по май 2025 года. Абсолютными победителями вечера стали Bad Bunny и аргентинский дуэт Ca7riel & Paco Amoroso — каждый забрал по 5 наград. Три премии получила Natalia Lafourcade, три — бразильский артист Liniker. Bad Bunny стал номинантом №1 года (12 категорий) и выиграл «Альбом года» за Debí Tirar Más Fotos и «Песню года» за Baile Inolvidable. Аргентинский дуэт Ca7riel & Paco Amoroso впервые попал в шорт-лист, сразу получил 10 номинаций и ушёл с пятью граммофонами, став одним из главных открытий года. Лучшие из лучших: 🏆Álbum del Año — Bad Bunny 🏆Grabación del Año — Alejandro Sanz (Palmeras en el Jardín) 🏆Canción del Año — Karol G (Si Antes Te Hubiera Conocido) 🏆Mejor Nuevo Artista — Paloma Morphy 🏆Mejor Álbum Urbano — Bad Bunny 🏆Mejor Álbum Pop Tradicional — Andrés Cepeda (Bogotá) Latin Grammy снова подтвердил: Латинская музыка остаётся самым динамичным и влиятельным жанром на планете. 2️⃣Tito “El Bambino” & Ñengo Flow взрывают сеть новым видео Flow Callejero Тито “El Bambino” и Ñengo Flow выпустили мощный трек Flow Callejero — возвращение к корням классического реггетона. Клип снят в родном квартале Тито, а в кадре появляются звёзды жанра: Farruko, Brytiago, Jowell, DJ Luian, Casper Mágico и другие. Трек — о верности, силе улиц и уважении к тем, кто строил культуру с нуля. Продукцию возглавили DJ Nelson и Joelito Guanábana, задав треку ностальгический, но мощный вайб. Песня войдёт в новый альбом Тито «La Gente del Patrón». 3️⃣Корина Смит представила самый личный альбом в карьере — menos triste más mami Венесуэльская певица Corina Smith выпустила свой самый интимный и честный проект — альбом menos triste más mami, состоящий из 18 треков. Пластинка — это дневник пережитой боли, восстановления и взросления после сложных отношений. Музыкально Корина смешивает trap, pop, R&B и реггетон, оставаясь верной своей мягкой и эмоциональной подаче. Певица признаётся: «Это письма, которые я никогда не отправила. Ошибки, сожаления, признания… но и шаг вперёд, даже если ещё больно». Одновременно вышел клип на lowkey, записанный вместе с De La Ghetto — история о любви на расстоянии и попытке найти баланс между работой и чувствами. Корина Смит укрепляет статус одной из самых искренних и сильных женских голосов нового латиноамериканского поп-урбано. #LatinAmerica#НовостиЛатАм#МузыкаЛАТАМ#LatinGrammy2025#Reggaeton#BadBunny#Ca7riel#PacoAmoroso#TitoElBambino#NengoFlow#CorinaSmith 👉Всегда свежие новости о странах Латинской Америки!