@exploreclassical · Post #463 · 25.12.2022 г., 18:02
倒数日历到今天就结束啦~活动期间channel的关注人数也来到了1000,非常感谢大家的支持🙏Merry Christmas and happy holidays! 🧑🎄🎄 #adventCalendar https://www.youtube.com/watch?v=hVWVAVZuTpA
Hashtags
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
Пребарај: #adventcalendar
@exploreclassical · Post #463 · 25.12.2022 г., 18:02
倒数日历到今天就结束啦~活动期间channel的关注人数也来到了1000,非常感谢大家的支持🙏Merry Christmas and happy holidays! 🧑🎄🎄 #adventCalendar https://www.youtube.com/watch?v=hVWVAVZuTpA
Hashtags
@exploreclassical · Post #462 · 25.12.2022 г., 04:12
https://m.youtube.com/watch?v=n036kBC1HEw #adventCalendar
Hashtags
@exploreclassical · Post #459 · 23.12.2022 г., 02:53
Winter Storm Elliott 即将横扫北美lol今天就来首 Winter Wind 吧 🌬️🌬️🌬️ https://www.youtube.com/watch?v=bHbgLoDG8Ko&ab_channel=MaurizioPollini-Topic #adventCalendar
Hashtags
@exploreclassical · Post #458 · 22.12.2022 г., 01:24
大家冬至快乐~分享一首巴托克的 Winter Solstice Song, 一年中最黑暗的一天即将过去~ https://www.youtube.com/watch?v=tKaEmA6soIE #adventCalendar
Hashtags
@exploreclassical · Post #457 · 21.12.2022 г., 02:58
差点忘了今天的分享了hhh今天夹带一个个人私货吧hhh我最喜欢多圣诞音乐是来自 Vince Guaraldi Trio 的为花生漫画创作的配乐~俏皮的风格,配上舒尔茨画笔下那些有趣的小朋友,以及想象力超级丰富的 snoopy,可以让人忘记所有烦恼! 今年还有幸去参观了位于加州Santa Rosa的舒尔茨博物馆,参观中还碰到了现场的爵士表演,是今年最难忘的记忆之一了! https://m.youtube.com/watch?v=VVB18xbRMI4&list=PLEpZan9S2GOFesp-gJqsdD80a7zoaflHa #adventCalendar
Hashtags
@exploreclassical · Post #455 · 18.12.2022 г., 19:15
今天看了这届世界杯的唯一一场球hhh~分享帕瓦罗蒂在一首1990年世界杯的conert上演唱的,我们熟悉的 Nessun Dorma~据说这首曲子成为1990年世界杯的一首代表曲目是因为当年BBC体育频道非常罕见的选用了这首曲子作为转播片头。据说帕瓦罗蒂小时候还曾经想过去当门将hhh~另外发现1990年世界杯的决赛是西德vs阿根廷,阿根廷惜败,今天也是终于圆了阿根廷长久以来的梦想啦! https://www.youtube.com/watch?v=V5moKfZ9Y2Q #adventCalendar
Hashtags
@exploreclassical · Post #454 · 17.12.2022 г., 22:20
今天是贝多芬的生日,分享一首他的作品吧~好像贝多芬没有太多圣诞相关的作品,查了一圈发现一篇文章里提到了这首 12 Variations on a Theme from Handel's Judas Maccabaeus, WoO 45,大约是原作的宗教背景让它成为了圣诞会演奏的曲目吧~另外旋律也挺轻快的 https://www.youtube.com/watch?v=cdmPI7M7oug ref: https://www.henle.de/blog/en/2019/12/23/christmas-with-beethoven/ #adventCalendar
Hashtags
@exploreclassical · Post #453 · 16.12.2022 г., 22:22
周五啦,今天分享一个特别的!我们这今天风雨交加,这恶劣的天气让我想到了一集冰天雪地背景的《猫和老鼠》:snowbody loves me~配乐是肖邦串烧🤣希望大家看得开心,keep warm 🧣 https://m.youtube.com/watch?v=i0cwtd5ZDe0 #adventCalendar
Hashtags
@exploreclassical · Post #452 · 16.12.2022 г., 04:13
今天发的有点晚啦,分享一首 Liszt 的 Christmas Tree Suite 里的 Slumber Song~晚安💤 https://m.youtube.com/watch?v=8XkI0xamAhU #adventCalendar
Hashtags
@exploreclassical · Post #449 · 13.12.2022 г., 02:11
在这段紧张的日子里,我们听一段幽默曲休息一下吧。我们选了一个Jazz的幽默版本,Art Tatum的即兴技术高超,让人叹为观止。请朋友们欣赏 https://www.youtube.com/watch?v=ZL-CVV616nI&ab_channel=bluesinorbit #adventCalendar
Hashtags
@exploreclassical · Post #448 · 12.12.2022 г., 03:38
今天久违的出去玩耍,居然就撞上了这个冬天的第一场雪!分享一首 Sibelius 的 Symphony No.6,Sibelius 曾说过“The Sixth Symphony always reminds me of the scent of the first snow.” ❄️ https://youtu.be/uV2Sh56TK_g #adventCalendar
Hashtags
@exploreclassical · Post #447 · 10.12.2022 г., 22:53
昨天我们听了 Fanny Mendelssohn 的季节主题套曲,今天来一首可能大家更熟悉的:柴可夫斯基的季节主题套曲~同样分享十二月~ https://www.youtube.com/watch?v=U-FGZ5InUNc&ab_channel=OlgaScheps #adventCalendar
Hashtags