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

Резултати

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

Пребарај: #picacg

当前筛选 #picacg清除筛选

📣HaKa Comic | 清爽无广告的哔咔第三方客户端 多端可用 支持漫画 ID 分享的跨平台阅读器 🖼 标签:#HaKaComic#哔咔漫画#漫画#PicACG#阅读器#漫画阅读器 📱 简介:HaKa Comic 是一款为 PicACG / Bika / 哔咔用户打造的 跨平台第三方客户端,界面清爽、无广告、使用体验比原版更轻快。它完整支持官方最新的 漫画 ID 分享功能,在漫画详情页就能直接复制 ID,方便与朋友互相推荐作品。应用适配 Android、iOS、macOS、Windows 多端,让你无论在手机、平板还是电脑上都能保持一致的阅读体验 💬 小编有话说:想要稳定、清爽、跨平台的哔咔客户端?HaKa Comic 基本就是最省心的那个 📖Github · 💲Releases下载 😌频道 |🙂群聊 |🤓中文包 |🚇搜索

落樱/Fallen sakura

@xxluoxx · Post #750 · 08.04.2023 г., 14:58

TAG索引 #第三方#脚本#油猴#模块#Chrome拓展#插件 #激活工具#管理工具#清理工具#卸载工具#下载工具#校验工具#翻译工具#工具箱 #网盘#解析#磁力#语法#搜索#疑难杂症#正则 #系统#壁纸#音乐#影视#root #网易云#spotify#Zlibrary#aria2#IDM #tg#bot#语言包 #迅雷#B站#TV#Flash#微信#QQ #picacg#office#pixiv#tiktok#potplayer#YouTube#exhentai#galgame#steam #PS#RSS#TTS#OCR#绘制软件#人声分离#语音合成 #网站#歌单迁移 #文件互传#隐私保护#资源站#天气#地图#匿名信息#反向字典#在线词典 #机场#vps#ip#GFW#订阅转换#代理软件#测速 #资讯#beta计划#日常#科技生活#AI#番剧 #沙雕一刻#闲谈#游戏#好图#NSFW #阅读#书籍#高考#学习 其他频道: @VrChat_Cat 发点vrc猫猫图 @High_School_Tutorial 高中的各种资料 @playupdate 更新play商店的最新版本