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

Пребарај: #dowww

当前筛选 #dowww清除筛选
📓 Real Spencer Woo

@realSpencerWoo · Post #161 · 04.05.2020 г., 13:38

#WSL#dowww#Windows#Netlify 🎮 Dev on Windows with WSL 在 Netlify 上部署的版本出了个非常拉跨的 bug:直接访问内页或者进入某一页之后再刷新,都会会导致当前侧边栏无法点击,没法导航。大家可以来围观一下我在 Netlify Community 上发的 issue:VuePress deployment on Netlify succeeds, but experience errors when reloading specific pages。 然鹅 Vercel(也就是之前的 ZEIT)就没有这个问题(咱也不知道为啥…),可能考虑最近迁移过去,大家来看看这两个 URL 哪个访问更快一些: * Vercel 版本:https://dowww.now.sh * Netlify 版本:https://dowww.netlify.app PS:这两个链接都是原始链接,没有套我域名的 Cloudflare CDN。

📓 Real Spencer Woo

@realSpencerWoo · Post #60 · 07.01.2020 г., 13:56

#GitHub#Windows#WSL#更新#dowww 🎉🎉🎉 历经快半个月的时间,我终于将 Dev on Windows with WSL 重构完成!Dev on Windows with WSL 迎来了 v1.0.0 的里程碑!本次文档重大更新,所有内容几乎全新开始。感谢大家的关注和期待 (✿◡‿◡) Dev on Windows with WSL 新版入口 | GitHub 仓库 🍗 本次重点更新在于对 WSL 2 进行详细介绍,以及对 VS Code 利用 Remote 远程开发组件包连接 WSL 环境的配置方法的详细讲解。除此之外,文档还增加了 WSL 与 WSL 2 的架构对比、WSL 与 WSL 2 的详细安装方法、VS Code 利用 WSL 环境开发各种语言项目的配置方法…… 🥟 同时,文档主网站 VuePress 版本更新到 ^1.0,引入了更细腻的 smooth-scroll、Medium 风格的图片预览,重新设计了强调色和侧边栏样式,还嵌入了 Algolia 文档搜索服务。另外,在 VuePress 默认主题的基础之上,还增加了版本归档、版本切换的功能。 💗 一年多之前,更确切的来说,2018 年的国庆期间,Dev on Windows with WSL 仅仅是我一个个人的项目,而且仅仅是一篇文章。到今天,我和几位 Contributors 已经撰写了超过 5 个部分的 18 章内容,获得了 360+ Stars,解决了 20 余个问题,合并了 10 余个 PR。感谢大家的关注,鞠躬。 🌟 本条消息欢迎大家奔走相告,让更多的同学了解如何在 Windows 上用 WSL 优雅开发。欢迎大家去 GitHub 上面 Star 项目,你的支持是我更新的最大动力~笔芯 (´▽`ʃ♡ƪ) 📮 Via channel: @realSpencerWoo