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

Резултати

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

Пребарај: #bach

当前筛选 #bach清除筛选
Classical Music

@exploreclassical · Post #529 · 07.11.2024 г., 18:34

跳进 Passacaglia 的兔子洞(4)—— 管风琴 BWV 582 虽然BWV 582的不同版本都是挺好听的,但是一旦听了管风琴版就“曾经沧海难为水“了🤣不愧是“乐器之王”的魅力!听了好几首管风琴版,发现是不同的版本管风琴的音色选择居然可以完全不一样。个人对管风琴几乎没有任何了解,不过可能是巴赫当年没有写出来每一个地方需要什么音色,于是管风琴家就可以根据自己的理解以及使用的管风琴进行设置,这个工作叫做 organ registration,私以为一定程度上和orchestration有些类似(?我不懂哈只是瞎说 今天分享两个版本,一个是 Karl Richter 的版本,另一个是 Marie-Claire Alain的版本(见评论),大家可以比较比较他们的不同~ https://www.youtube.com/watch?v=_W4PJUOeVYw #bach

Hashtags

Classical Music

@exploreclassical · Post #528 · 05.11.2024 г., 19:06

跳进 Passacaglia 的兔子洞(3)—— BWV 582 的 transcriptions 大约是这首曲子太受人喜爱了,BWV 582有非常非常非常多的 transcription~这个小系列第一条里的 Leopold Stokowski 的交响乐版就是其中一个,除此之外还有 Ottorino Respighi,Eugene Ormandy等人的交响乐版。钢琴版比较有名的有 Eugen d’Albert 的版本和 Max Reger 改编的双钢琴版,Krystian Zimerman 也自己改编过一个版本。其他版本还有弦乐四重奏,铜管五重奏等等版本。 这里分享一张专辑,含有五个不同的 transcrpition~ https://youtube.com/playlist?list=OLAK5uy_k9gWmBhrs26FA9AbiTT1bLq97jkiv9Cwo&si=8bJpmgja-Snqlz30 #bach

Hashtags

Classical Music

@exploreclassical · Post #524 · 02.11.2024 г., 17:55

跳进Passacaglia的兔子洞(1)——什么是 Passacaglia? 前些天在广播里听到了交响乐版的 Bach 的Passacaglia and Fugue in C minor,于是略微跳进了兔子洞🤣了解了一下Passacaglia这个形制,Bach的这一首Passacaglia以及管风琴的一些知识~ 先是了解了一下 Passacaglia 这个形制。Passacaglia 是17世纪在西班牙起源的,这个词本身的意思大约就是 cross(passa) caglia(street)。最大的特点是有一个bass-ostinato,然后在这个基础上写很多旋律variation。一般 Passacaglia 都是三拍子的,而且有一种比较严肃的感觉。这个形制和 Chaconne 非常类似,后面也会被音乐家混合使用。 除了巴赫的这首著名的 Passacaglia and Fugue in C minor 之外,其他比较有名的 Passacaglia 还有 Handel 的 Harpsichord Suite No. VII in G minor (HWV 432)最后一个乐章, Purcell 的歌剧Dido and Aeneas 中的 Dido’s Lament,Mendelssohn 也写过一首管风琴的 Passacaglia in C minor (不愧是巴赫复兴鼻祖?😂),还有肖斯塔科维奇的 Lady Macbeth of Mtsensk Act 2 的 interlude (也有一个管风琴版本)。 扯了这么多,还是先分享一下拉我进兔子洞的罪魁祸首吧,由Leopold Stokowski改编的交响乐版 Bach: Passacaglia And Fugue In C Minor, BWV 582~ https://www.youtube.com/watch?v=naBh9Vhc6ZI #bach

Hashtags

Classical Music

@exploreclassical · Post #252 · 04.04.2021 г., 15:39

今天是中国传统节日清明节。早上分享的《忆故人》觉得很应合清明节“路上行人欲断魂“的气氛。 今天也是基督教的复活节,来听一首Bach的Easter Oratorio的选段~它的初次演出是1725年复活节(四月一日) #bach https://www.youtube.com/watch?v=EgQz899oW_8 ref:https://en.wikipedia.org/wiki/Easter_Oratorio

Hashtags

123•••1011
ПретходнаСтраница 1 од 11Следна