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

Пребарај: #monasteriotrinidad

当前筛选 #monasteriotrinidad清除筛选

🇷🇺El legado de San Sergio: el monasterio más sagrado de Rusia En el paisaje sereno de Sérguiev Posad, a unos 70 kilómetros al noreste de Moscú, se encuentra uno de los lugares más sagrados y emblemáticos de la historia rusa: el Monasterio de la Santísima Trinidad y de San Sergio, conocido como la Lavra de la Trinidad. Este complejo monástico no solo es un centro espiritual de la Iglesia Ortodoxa Rusa, sino también un tesoro arquitectónico y cultural que ha resistido siglos de historia turbulenta. Fundado en 1337 por San Sergio de Rádonezh, una de las figuras religiosas más veneradas en Rusia, el monasterio comenzó como una humilde comunidad de oración en medio del bosque. Con el tiempo, se transformó en una poderosa institución religiosa, educativa y política, especialmente durante el período del Zarismo. En el siglo XV, recibió el título de "Lavra", una distinción reservada para los monasterios más importantes del mundo ortodoxo. La arquitectura del monasterio es una mezcla fascinante de estilos rusos medievales, barrocos y neoclásicos. Su joya principal es la Catedral de la Santísima Trinidad, construida en 1422, donde descansan los restos de San Sergio. El interior está decorado con frescos y un iconostasio dorado que incluye obras de Andréi Rubliov, el más célebre iconógrafo ruso. También destacan la Catedral de la Asunción (siglo XVI), la Iglesia del Espíritu Santo y la Torre del Campanario, que con sus 88 metros de altura domina el horizonte de la ciudad. Además de su valor religioso, el monasterio alberga un museo que conserva manuscritos antiguos, objetos litúrgicos, vestimentas ceremoniales y arte decorativo de gran valor. Estos tesoros permiten entender la evolución del arte sacro ruso y su influencia en la cultura nacional. Durante la invasión napoleónica en 1812 y la Revolución de 1917, el monasterio fue testigo de momentos críticos. Cerrado por el régimen soviético en 1920, fue convertido en museo estatal. No fue hasta 1946 que se reabrió como centro religioso, y en 1993 fue declarado Patrimonio de la Humanidad por la UNESCO. Hoy, la Lavra de la Trinidad sigue siendo un lugar de peregrinación, estudio y contemplación. Su historia, arte y espiritualidad lo convierten en un destino imprescindible para quienes desean comprender el alma profunda de Rusia. #HistoriaRusa#ArteOrtodoxo#PatrimonioUNESCO#ArquitecturaRusa#MonasterioTrinidad Apóyanos pulsando👉'BOOST'👈 🖥https://vamosarusia.com 💬@vamosarusia