@fosspost · Post #524 · 01.10.2020 г., 11:45
DigitalOcean's Hacktoberfest is Hurting Open Source https://blog.domenic.me/hacktoberfest/ #DigitalOcean@DigitalOcean
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
Пребарај: #digitalocean
@fosspost · Post #524 · 01.10.2020 г., 11:45
DigitalOcean's Hacktoberfest is Hurting Open Source https://blog.domenic.me/hacktoberfest/ #DigitalOcean@DigitalOcean
Hashtags
@vps_test · Post #73 · 14.05.2023 г., 06:34
DigitalOcean Sydney 悉尼 带宽最小的一个区域,国际互连超级差劲,干啥啥不行,没有任何优势。 #digitalocean#1Gbps#建站
Hashtags
@vps_test · Post #71 · 14.05.2023 г., 06:31
DigitalOcean Toronto 多伦多 下行5Gbps,上行2Gbps,冷门区域,IP质量较好,比较干净 #digitalocean#1Gbps#建站
Hashtags
@vps_test · Post #70 · 14.05.2023 г., 06:31
DigitalOcean Frankfurt 法兰克福 下行15Gbps,上行2Gbps,用的人较少,欧洲用户选他比较多,国际互连比较强 套京德IPLC直接起飞,超级无敌的落地鸡 #digitalocean#1Gbps#建站
Hashtags
@vps_test · Post #69 · 14.05.2023 г., 06:30
DigitalOcean London 伦敦 下行15Gbps,上行2Gbps,是DigitalOcean最热门的区域之一,网络算欧洲顶级 #digitalocean#1Gbps#建站
Hashtags
@vps_test · Post #68 · 14.05.2023 г., 06:29
DigitalOcean Singapore 新加坡 下行1.5Gbps,上行2Gbps,带宽较小 电信/联通拉稀,广移可拉 网络不是很稳定,因为APE海缆脆弱,老波及到 #digitalocean#1Gbps#建站
Hashtags
@vps_test · Post #67 · 14.05.2023 г., 06:27
DigitalOcean Amsterdam 荷兰阿姆斯特丹 上行2Gbps,下行10Gbps,但是CPU较弱,可能是用的人多的原因 #digitalocean#1Gbps#建站
Hashtags
@vps_test · Post #66 · 14.05.2023 г., 06:27
DigitalOcean San Fransisco 硅谷 下行7Gbps 上行2Gbps,对国内网络较好,适合建站 #digitalocean#1Gbps#建站
Hashtags
@vps_test · Post #65 · 14.05.2023 г., 06:26
DigitalOcean New York 5Gbps下行,2Gbps上行 #digitalocean#1Gbps#建站
Hashtags
@TossLabChannel · Post #510 · 10.01.2025 г., 14:33
#DigitalOcean#数字海洋#VPS#白嫖 白嫖Digitalocean数字海洋服务器10台VPS 60天 DigitalOcean 是一家总部位于美国纽约的云计算服务商,成立于2011年,提供高性价比和易用的云服务。通过注册新账户并使用 邀请链接 ,可以获得200美元的免费额度,并使用该额度购买VPS实例等服务,最长可使用60天。 注册条件 • 有效邮箱地址:可使用Google邮箱、QQ邮箱等主流邮箱进行注册。 • 支付方式:需要绑定信用卡或借记卡(部分地区支持支付宝)。 • 邀请链接:使用邀请链接注册可获得200美元免费额度。 • 美国VPN(可选):建议使用美国IP注册,以防止账户因地区限制被封。 注意事项 1. 免费额度 :使用邀请链接注册后,获得200美元免费额度,需在2个月内使用完毕。合理规划资源使用,避免浪费。 2. 绑定支付信息 :绑定支付方式时,会产生1美元的预授权金额,之后会退回,不会影响实际账户资金。 3. 机器实例配额 :每个账户最多可创建10个实例。建议不要一次性启动所有实例,以免触发账户限制。 4. 使用VPN :建议在整个注册和使用过程中保持美国VPN开启,避免因IP地区问题导致账户受限。 5. 避免超额使用 :免费额度有效期为2个月,请根据需求合理分配资源,避免额外费用。 通过合理使用DigitalOcean的免费额度,可以在不花费资金的情况下体验其VPS服务。 📢 群聊: @TossIPhone 🎈 频道: @TossIChannel ❗️ ❗️ ❗️ ❗️ ❗️ ❗️ ❗️ ❗️ 🔘折腾系列频道 - 全面介绍 🔘境外离岸银行教程合集目录 🔘折腾实验室优质Github项目合集
Hashtags
@vps_test · Post #72 · 14.05.2023 г., 06:33
DigitalOcean Bangalore 班加罗尔 最冷门的一个区域,根本没人用,算是我见到过的印度机器中国际互连最强了,到国内三网稳定,延迟大,但是几乎不丢包,优秀的落地,抗DDoS!但是CPU性能特别好,有需要持久计算能力的可以选。 #digitalocean#1Gbps#建站#DDoS防护
Hashtags