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

Резултати

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

Пребарај: #díadelabanderarusa

当前筛选 #díadelabanderarusa清除筛选
EmbajadaRusaVen

@embajadarusaven · Post #2519 · 22.08.2025 г., 14:02

🇷🇺22 de agosto – Día de la Bandera Nacional de Rusia Hoy Rusia celebra el Día de su bandera nacional, una de las principales fiestas estatales, establecida en 1994 en conmemoración de la restitución, en 1991, del histórico tricolor ruso: blanco, azul y rojo. Este estandarte simboliza la independencia, la fuerza y la continuidad de la historia del Estado ruso. 📜 Según una conocida leyenda, fue tras un encuentro con la emperatriz rusa Catalina II y al conocer el tricolor ruso que Francisco de Miranda, héroe venezolano y precursor de la independencia, concibió el diseño de la bandera que más tarde inspiraría a la de Venezuela. Así, los destinos de nuestros pueblos quedaron unidos también a través de sus símbolos. 🇷🇺🤝🇻🇪 El tricolor ruso y el tricolor venezolano no son solo banderas nacionales, sino también emblemas de dignidad, libertad y futuro para nuestros pueblos. ✨ Cada color de la bandera rusa tiene un profundo significado: ⚪️Blanco — la pureza y la paz. 🔵Azul — la fe, la fidelidad y la espiritualidad. 🔴Rojo — la valentía, la fuerza y la entrega por la Patria. En este día festivo, recordamos con orgullo que la historia de Rusia y Venezuela está entrelazada no solo por la diplomacia y la amistad, sino también por símbolos que siguen inspirando a generaciones. #DíaDeLaBanderaRusa#RusiaVenezuela80#Amistad

🇷🇺Día de la Bandera Estatal: el símbolo que une a todos los rusos Cada 22 de agosto, Rusia se viste de blanco, azul y rojo para celebrar el Día de la Bandera Estatal, una fecha que va más allá de lo ceremonial. Es un día para recordar que es un símbolo vivo que acompaña a cada ciudadano en su historia personal y colectiva. La bandera actual fue restaurada oficialmente en 1991, tras la caída de la Unión Soviética, y establecida como símbolo nacional por decreto presidencial en 1994. Pero su origen se remonta al siglo XVII, cuando el zar Alexéi Mijáilovich ordenó izar una bandera en el primer buque de guerra ruso, el “Águila”. Más tarde, Pedro el Grande adoptó el diseño tricolor inspirado en los colores paneslavos, y desde entonces ha sido emblema de soberanía, unidad y orgullo nacional. Durante el período soviético, la bandera roja con la hoz y el martillo dominó el paisaje. Sin embargo, el regreso de la tricolor marcó un renacer simbólico para la Federación Rusa. El significado de los colores también ha evolucionado. Hoy se interpreta que el blanco representa la paz y la pureza, el azul la fe y la lealtad, y el rojo la valentía y la sangre derramada por la patria. En palabras de la Cancillería rusa, la bandera tricolor es “un vínculo vivo con la Patria” para los compatriotas en el extranjero. Y no es para menos: ondea en embajadas, escuelas, barcos, y hasta en las misiones espaciales. Es el hilo que cose la identidad rusa en cada rincón del planeta. #DíaDeLaBanderaRusa#TricolorRuso#HistoriaDeRusia#OrgulloNacional#CulturaRusa Apóyanos pulsando👉'BOOST'👈 🖥https://vamosarusia.com 💬@vamosarusia