@BGP_Channel · Post #5425 · 13.12.2021 г., 13:23
#coalcloud 上海9929 Vds特惠预售 限量8台 8h16G 500M(峰值带宽)不限流量 2500/月 预购请联系@linzijiang 1月3日开通
Hashtags
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
Пребарај: #coalcloud
@BGP_Channel · Post #5425 · 13.12.2021 г., 13:23
#coalcloud 上海9929 Vds特惠预售 限量8台 8h16G 500M(峰值带宽)不限流量 2500/月 预购请联系@linzijiang 1月3日开通
Hashtags
@BGP_Channel · Post #5586 · 05.12.2022 г., 15:44
#coalcloud #广州移动8折优惠码coalcloudgzcm2023 广州移动一区 新节点上线 新增VDS6,VDS7,VDS8节点 流量型产品 折后双IP 1T单向流量仅需168元/月 免费赠送ipv6 套餐预设流量 6元/100G 产品使用期间可按需购买流量加油包 独享型产品折后仅需6元/M 最低100M起售 下单地址:https://coal.coalcloud.net/console/store/store
Hashtags
@BGP_Channel · Post #5450 · 04.01.2022 г., 08:06
#coalcloud#新品上架 丽水移动高性能VDS 5950X CPU核弹性能 计算型C1.c1m1 1vCPU 1GB Ram 500Mbps 带宽 400GB 流量 单向流量计费 新用户使用用户优惠码 mzfqy666 折合367.52元/年 流量25元/t 可自助添加 购买地址 https://coal.coalcloud.net/store/store
Hashtags
@BGP_Channel · Post #5438 · 27.12.2021 г., 11:14
#coalcloud#新品上架 辽阳联通VDS 5950X CPU核弹性能 标准型S1.c1m1 1vCPU 1GB Ram 500Mbps 带宽 400GB 流量 单向流量计费 412元/年 流量21元/t 可自助添加 购买地址 https://coal.coalcloud.net/store/store
Hashtags
@HostEvaluate · Post #633 · 25.03.2020 г., 05:40
HostProvider: CoalCloud (长沙联通) Specification: 2 vCore | 2G RAM | 20G SSD Raid10 Network: 6T @ 200Mbps Looking glass: 58.20.33.1 Price: 368CNY / Month #CN#CU#CoalCloud
Hashtags
@dingyue_Center · Post #3275 · 18.06.2025 г., 16:51
#VPS#抽奖 #荔枝云 🎁4个抽奖 共350台VPS 🎉白嫖vps1月 👉@lycheencloud 📅开奖日期:06月19日 19时30分00秒 #Coalcloud 碳云(CoalCloud) NodeSeek 专属 618 福利抽奖活动 这都抽不到那你就是非酋
Hashtags
@BGP_Channel · Post #5457 · 17.01.2022 г., 13:16
#coalcloud#凭嘉心糖牌子购买可返现30元 上海联通9929 vds 现货开卖 标准型S2.c4m8 40G ssd硬盘 峰值带宽 500Mbps 10T单向流量(130元/T) 月付 1680元 季付9.5折 半年付9折 年付8.5折 更多规格~ #到日延迟堪比iepl 购买地址 华东大区 上海9929 https://coal.coalcloud.net/store/store Coalcloud全球加速 标准版 节点上新(不参与返现) (标准版)新增节点 上海联通9929|1Gbps 6x (标准版)新增节点 沪日9929|1Gbps 6.5x 购买地址 标准版 https://coal.coalcloud.net/store/cdnStore
@BGP_Channel · Post #5456 · 15.01.2022 г., 13:53
#coalcloud#新年特惠 广州移动vds 年付特惠款 标准型S1.c1m2.660 40G ssd硬盘 峰值带宽 1000Mbps 1T单向流量 年付 660元 两年付8.3折 三年付8.3折(流量翻倍) 标准型S1.c2m4.840 40G ssd硬盘 峰值带宽 1000Mbps 1T单向流量 年付 840元 两年付8.3折 三年付8.3折(流量翻倍) #183段/120段ip随机分配,可提交工单更换,web端口需备案域名过白才能使用,严禁搭建任何代理程序 #免费赠送ipv6 购买地址 https://coal.coalcloud.net/store/store
Hashtags