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

Пребарај: #alunfrancis

当前筛选 #alunfrancis清除筛选
🎼 CLÁSICA AL ATARDECER 🎻

@ClasicaAlAtardecer · Post #5846 · 12.10.2022 г., 18:00

#Sinfonía3#AllanPettersson#AlunFrancis Título:La “Sinfonía Nº 3” Autor:Allan Pettersson Movimientos: 🎵 Introduzione, andante con moto 🎵 Largo con espressione 🎵 Allegro comodo 🎵 Allegro con moto Interpretación: Orquesta Sinfónica de la Radio de Saarbrücken Director: Alun Francis Fuente:🎼 @ClasicaAlAtardecer

🎼 CLÁSICA AL ATARDECER 🎻

@ClasicaAlAtardecer · Post #5845 · 12.10.2022 г., 18:00

​​#Sinfonía3#AllanPettersson#AlunFrancis LA “SINFONÍA Nº 3” La “Sinfonía Nº 3” fue compuesta entre 1954 y 1955 por Allan Pettersson. Se estrenó el 21 de noviembre de 1956, interpretada por la Orquesta Sinfónica de Göteborg dirigida por Tor Mann. Es una de sus pocas sinfonías dividida en los cuatro movimientos tradicionales. Pero los tres movimientos finales se interpretan sin interrupción. Esta compuesta de cuatro movimientos 🎵Introduzione, andante con moto 🎵 Largo con espressione 🎵 Allegro comodo 🎵 Allegro con moto El primer movimiento, introduzione, andante con moto, empieza con un redoble del bombo en crescendo, sobre unas notas enunciadas por la cuerda grave. Se expone una idea temática de la cual derivará todo el complejo movimiento. La variación de los tempos a lo largo del movimiento es constante, por lo cual los títulos de las distintas partes de la sinfonía no pueden ser tomados en sentido general. Después de una sección allegro encontramos una parte más tranquila, con el inicio de temas más melódicos en la cuerda. Explosiones tímbricas se intercalan a lo largo del movimiento como gritos de protesta. El segundo movimiento, largo con espressione, empieza pausadamente con las dos mismas notas con las que termina el anterior. La madera actúa como solista frente a la cuerda. El movimiento llega a un breve climax del que sale una melodía lírica en la cuerda. En la parte final una melodía del violín recuerda los conciertos para cuerda. El movimiento contiene uno de los raros momentos de ternura en la obra de Pettersson, pero esta melancolía se rompe con fuertes disonancias. El movimiento podría expresar una idea de resignación. El tercer movimiento, allegro comodo, correspondería al scherzo. Enlazando directamente con el anterior movimiento, la música llega a una gran violencia, con fuertes disonancias. Grandes cambios de ritmo producen enorme tensión. Ritmos bárbaros acompañan a la sección final que enlaza directamente con el movimiento concluyente. El último movimiento, allegro con moto, empieza con una explosión de ideas rítmicas. La cuerda nos presenta un inicio de tema que no llega a desarrollarse. Motivos de todos los movimientos reaparecen en una gran confusión. Todo ello crea como un paisaje delirante de pesadilla. En la sección final aparece una especie de coral, que intenta cambiar el ambiente, en busca de un final más feliz, pero una pregunta sin respuesta produce nuevamente angustia, llevándonos a la coda. Una obra quizás más fácil que la segunda, sin querer decir con ello que sea una sinfonía apropiada para iniciarse en la música. Se trata de una obra compleja, dura en muchos momentos. Una música angustiada, como un viaje al infierno. Aunque la música sigue siendo tonal, la complejidad de las ideas y sus continuos cambios la hacen difícil de seguir y comprender. @ClasicaAlAtardecer