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

Пребарај: #imfile

当前筛选 #imfile清除筛选
五星上将麦克阿象的笔记

@CitizenScyu · Post #1287 · 05.09.2024 г., 04:09

江山代有才人出,一款名为 imFile 的全新下载工具横空出世。imFile 不仅继承了 Motrix 的诸多优点,还在此基础上进行了大量的改进与创新,成为了一款集多种功能于一体的全能下载器。 全面兼容:imFile 支持 HTTP、FTP、BitTorrent (BT) 和 Magnet (磁力链接) 等多种协议,几乎涵盖了所有的下载需求。跨平台支持:能够支持 Android、Mac、Windows 多平台上使用。 个性化设置:用户可以根据自身网络环境设置上传/下载限速,并且可以选择不同的用户代理 UA,适应不同的使用场景。最高支持 10 个任务同时下载,单任务最多可开启 64 线程,极大提升了下载效率。支持 DNS over HTTPS (DoH),有效避免了部分 Tracker 服务器因 DNS 劫持而导致的问题。 😖点击下载软件 🥰频道🐘群组😳投稿 #Windows#PC#imFile#下载#开源#磁力

✈️ imFile | Motrix 停更太久后,热心网友基于项目二次开发继续接着维护 🏷 检索标签:#imFile#下载#Motrix#BT下载#aria2#磁力#磁力链接#BT#ed2k ⭐️ 详情介绍:imFile 是从 Motrix fork 出来的下载工具:前者已经很久没更新,issues 也积了不少,所以这个项目接过来继续维护。它支持 HTTP、FTP、BT、磁力链、ed2k 这些常见资源,原来习惯 Motrix 的用户,上手不会太别扭 继维护之后补上了这些实用细节:像 BT 部分文件选择下载、每天自动更新 Tracker 列表、DoH 处理部分 trackers 的 DNS 劫持、任务自动保存,重启后不丢记录,这些都不是花活,都是日常真会碰到的地方 再加上最高 10 个任务同时下载、单任务最高 64 线程、支持 UPnP / NAT-PMP、支持直接下哈希,拿来当主力下载器会更稳一点 🔎官网 · 📖GitHub · 🪟下载 📜 相关阅读: ➡️Motrix Next | 原Motrix 二次重建版,免费开源的全功能HTTP/BT/磁力下载管理器 😌频道 |🙂群聊 |😋中文包 |☺️搜索