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

Резултати

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

Пребарај: #vim

当前筛选 #vim清除筛选
VmShell VPS Channel

@vmshell · Post #1106 · 05.08.2023 г., 14:39

#Vim 作者Bram Moolenaar去世 布莱姆·米勒(荷兰语:Bram Moolenaar,1961年—2023年8月3日),生于荷兰南荷兰省利瑟,著名程序员,在自由软件界素有盛名。他是vim、A-A-P的作者,也是编程语言 Zimbu 的开发者。他也协助CAcert的开发。 Vim的第一个版本由布莱姆·米勒在1991年发布。最初的简称是Vi IMitation,随着功能的不断增加,正式名称改成了Vi IMproved。现在是在开放源代码方式下发行的自由软件。

Hashtags

📓 Real Spencer Woo

@realSpencerWoo · Post #238 · 01.12.2020 г., 12:56

#Vim#Theme 🌶 推荐一个 Vim / Neovim 的主题:sainnhe/sonokai,也包括 vim-airline 或者 lightline.vim 主题。这个主题的配色方案来自经典的 Monokai 主题,其中的 𝐀𝐭𝐥𝐚𝐧𝐭𝐢𝐬 主题和 Nord 的 Gnome 主题绝配!

Hashtags

AIGC

@aigcrubbish · Post #193 · 14.02.2026 г., 18:24

Vim 9.2 released Vim 文本编辑器发布了 9.2 版本。此次更新为 Vim9 脚本语言带来了显著增强,改进了差异比较模式,并完善了代码补全功能。此外,新版本还包含平台特定的改进,例如实验性的 Wayland 支持,并引入了一个新的交互式教程模式。 原文链接:https://lwn.net/Articles/1058744/ #Vim#文本编辑器#软件开发 #AIGC Read more

GitHub Trends

@githubtrending · Post #14634 · 26.04.2025 г., 11:30

#rust#code_editor#developer_tools#rust#text_editor#vim Lapce is a very fast and powerful code editor written in Rust. It offers smart features like code completion and diagnostics thanks to its built-in Language Server Protocol (LSP) support. Users can enjoy a Vim-like editing experience and work on remote projects as if they were local. Lapce also includes a built-in terminal for running commands without leaving the editor. This makes it easy for developers to work efficiently and stay focused on their projects. https://github.com/lapce/lapce

GitHub Trends

@githubtrending · Post #15097 · 26.08.2025 г., 12:00

#vim_script#hacktoberfest#personal_organizer#vim#vim_plugin#vimwiki#wiki VimWiki is a personal wiki plugin for Vim that helps you organize notes, manage to-do lists, write diaries, and create linked text files with easy navigation using simple key commands like `<Leader>ww`. It supports multiple markup syntaxes (VimWiki, Markdown, MediaWiki) and can export your notes to HTML. You can quickly create and follow links between pages, keep separate wikis for different projects, and sync your wiki files across devices since they are plain text. This makes note-taking fast, flexible, and accessible directly within Vim, improving productivity and organization without leaving your editor. https://github.com/vimwiki/vimwiki

infosecurity

@tg_infosec · Post #2923 · 09.02.2025 г., 12:29

👨‍💻 DevOps and IT Cheat-Sheet Collection. • Коллекция полезных шпаргалок для DevOps и IT специалистов. Содержание следующее: - #Nginx; - #Docker; - #Ansible; - #Python; - Go (Golang); - #Git; - Regular Expression (Regex); - #PowerShell; - #VIM; - #Jenkins; - Continuous Integration and Continuous Delivery (CI/CD); - #Kubernetes; - #Linux; - Redis; - Slack; - Puppet; - Google Cloud Developer; - PostgreSQL; - Ajax; - Amazon Web Services (AWS). ➡️https://github.com/sk3pp3r/cheat-sheet-pdf #CheatSheet#DevOps