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

Пребарај: #values

当前筛选 #values清除筛选

#时间管理#焦虑#心理健康#儒家文化#社交媒体#自我成长#价值观#女性议题#宇宙乘客#生活哲学 #TimeManagement#Anxiety#MentalWellness#Confucianism#SocialMedia#Self_improvement#Values#WomensIssues#UniversalResidents#LifePhilosophy 本期《宇宙乘客》节目深入探讨了现代人普遍面临的“时间不够用”和“朋友圈焦虑”两大困扰,旨在帮助听众理解并摆脱这些负面情绪。 节目从“时间恐惧”这一哲学概念入手,剖析了其在当代高压社会中的体现,尤其是在中国文化背景下,儒家思想、应试教育和“出人投地”观念如何使得时间成为一种稀缺资源,让人从小就产生紧迫感 。通过对胡适思想的引用和对清华附中教育现象的探讨,揭示了社会对个人成功的线性叙事,以及绩效考核的不断升级如何加剧了人们的焦虑 。 针对“朋友圈焦虑”,节目指出社交媒体作为“自我审视焦虑制造机”,让人在比较中产生沮丧、无能为力等情绪 。同时,也探讨了亲近关系和陌生人发布内容对个人情绪的不同影响,以及将个人价值与消费挂钩的问题 。 节目提供了多方面的解决方案: 调整心态: 认识到“时间不够”和“焦虑”是普遍现象,而非个人独有问题,从而减轻心理负担 。 认识文化影响: 理解儒家文化和传统观念对个人价值观的影响,从而审视并转变固有的思维模式 。 设定个人节奏: 拒绝盲目复制他人经验,设计符合自身运作模式的时间计划和人生目标 。 培养批判性思维: 带着批判性眼光看待媒体和社会对成功的定义和宣传,不被热搜等信息左右 。 关注内心需求: 建设和坚持自己的价值观,不被金钱和消费符号所绑架,追求有选择的自由 。 学会休息: 强调休息的重要性,将其视为恢复精力、提高效率和创造力的必要手段 。 减少手机使用: 意识到手机作为信息过载和焦虑来源的问题,鼓励少看手机,或带着批判性思维看待社交媒体内容 。 此外,节目还分享了播客主理人自身的经验,如何通过拆解目标、专注于可控因素,以及重新定义个人成功,来缓解自身焦虑 。节目的最后,推荐了刘晓阳的文字和视频,鼓励中国女性书写自己的历史,并希望听众在认清生活真相后,依然热爱生活 。 https://open.spotify.com/episode/2nvQCsXk7ULs4gZIVqGbWO (这篇内广告篇幅还不小,自行跳过即可,选题非常的切中我的痛点😢