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

Пребарај: #flowstate

当前筛选 #flowstate清除筛选

#SoftwareEngineering#Productivity#WorkLifeBalance#TimeManagement#DeepWork#FlowState#BurnoutPrevention#HabitBuilding#CareerAdvice#MentalHealth#TaskManagement https://alikhil.dev/posts/the-simple-habit-that-saves-my-evenings/

#时间管理#自我成长#专注力#行动力#长期主义#焦虑#心理健康#内耗#心流#情绪调节#思考方式#社交媒体#信息过载#自我接纳#宇宙乘客#播客推荐 #TimeManagement#SelfImprovement#Focus#ActionTaking#LongTermThinking#Anxiety#MentalWellness#Overthinking#FlowState#EmotionalRegulation#Mindset#SocialMedia#InformationOverload#SelfAcceptance#UniversalResidents#PodcastRecommendation 播客内容关键点总结 1. 专注力是核心竞争力 现代人注意力严重受损,难以深入思考或持续学习 心流状态(完全沉浸于任务)是高效能的关键 建议:减少新闻/短视频等被动信息输入,每天专注阅读5页书即可超越大多数人 2. 时间复利的威力 时间是不可再生资源,微小优势会随时间指数级放大 案例:跑步从3km→5km→10km的累积效应 坚持者最终会甩开中途放弃的人("熬死竞争对手"效应) 3. 行动方法论 破除拖延:恐惧源于对结果的过度担忧,需接受"不完美是常态" 目标拆解:像项目管理一样将年目标分解为月/周/日可执行单元 验收机制:定期检查进度并灵活调整计划 聚焦困难部分:避免只做简单事务(如学英语只背单词不练听说) 4. 价值观构建 区分"伪需求"与真实目标(追问"要钱究竟是为了什么?") 接受资源有限性:不能面面俱到,必须做优先级取舍 建立"成长型思维":失败是迭代过程,最终收获内心平静比物质更重要 5. 健康基础 辅酶Q10等补剂作为熬夜补救方案(但强调睡眠优先) 运动+营养+睡眠的综合健康管理 体力是长期主义的生理基础(参考郭德纲"活得长就是竞争力"理论) 6. 商业启示 个人IP打造:持续输出价值比追求短期流量更重要 职场建议:把公司事务当自己的事来积累能力 警惕"速成陷阱":所有真实技能都需要时间沉淀 核心公式:[成长 = 专注力 \times 有效行动 \times 时间] 反脆弱策略:在不确定环境中保持持续微迭代,让时间成为盟友而非敌人 https://open.spotify.com/episode/4kVYRpZenwcG18GhaTova4 如果你也受困于浮躁、低效或自我怀疑,那就听听吧(突然发现这个的广告部分相当的长呢