@Ptfxq · Post #555 · 27.01.2024 г., 04:23
#HDB HDB is down
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
Пребарај: #hdb
@Ptfxq · Post #555 · 27.01.2024 г., 04:23
#HDB HDB is down
Hashtags
@Ptfxq · Post #415 · 08.12.2022 г., 10:47
#HDB HDB开放了捐赠,最低捐赠1 EURO即可得到黄星。换句话讲,HDB只需要捐赠1 EURO即可永久保号。
Hashtags
@Ptfxq · Post #201 · 16.05.2021 г., 12:44
#HDB 工作人员变动 NTG 及 stevenofnine 退休,新管理上任。
Hashtags
@Ptfxq · Post #186 · 17.04.2021 г., 16:59
#HDB 第93届奥斯卡奖竞猜,奖品丰富。截止日期 4.20 凌晨(GMT)
Hashtags
@Ptfxq · Post #138 · 27.02.2021 г., 05:15
#HDB 新管理任命 AHD 的 sysop 担任 HDB 的 moderator。
Hashtags
@Ptfxq · Post #105 · 05.02.2021 г., 10:42
#HDB 公告:请开启二次验证 某 VIP 被盗号且账号被转卖,现已被 ban。管理组提醒会员开启二次验证保护账号。
Hashtags
@Ptfxq · Post #453 · 30.09.2023 г., 15:45
#HDB#站点公告 省流:TV 和纪录片现在永久 50%了,可以拿来刷了。 --- 50% FL for TV/Docu, improved request system - 2023-09-30 Short announcement today with several changes and improvements. Most notably, there is newly permanent 50% Free Leech for TV and Documentary categories. Several improvements for Requests: - Button "Add Bounty for Reseed" was added to Request Reseed section in torrent's detail for easier reseed requests creation. It redirects to Add bounty request page with prefilled form. - Added page showing reseed request buttons pressed in last 30 day period: https://hdbits.org/requests/reseed_button_requests - Further anonymization of bounty requests (added by, voters). - Added bounty requests to torrent's detail below Other copies.
@Ptfxq · Post #449 · 24.09.2023 г., 18:32
#PTP#HDB PTP 的邀请区多出来了一个 HDB 的官方邀请帖。 TK+,不允许中国等其他被禁止的国家的用户申请。 --- UPDATE:评论区大佬们出手了,帖子没了。 --- UPDATE:帖子又回来了
@Ptfxq · Post #429 · 03.04.2023 г., 06:49
#HDB#PTP 通过 HDB 俯冲 PTP 的机会也来了!1080P + 一年工龄即可在 HDB 申请 PTP 的官方邀请。
@Ptfxq · Post #70 · 30.01.2021 г., 13:26
#HDB#维护 今日站点维护已完成,明天图床维护。 update:已恢复。
@Ptfxq · Post #719 · 02.09.2024 г., 17:41
#HDB#站点免费#站免 Sitewide Free Leech for 1 day on September 8th (2024-09-08) Another bonus point target of 50,000,000 BP in the pot was reached so we're announcing that September 8th will be 24-hour sitewide Free Leech (00:00 GMT - 24:00 GMT). Enjoy everyone! 注意:HDB 有流控规则,每下载 35 个种子需等待 15 分钟,需要大面积拖种子的朋友们可以现在就下载种子文件了。 注意2:站免时间是九月八号不是现在,有些笨群友现在就开闸了,现在可以下种子先,等八号开闸
@Ptfxq · Post #670 · 02.06.2024 г., 15:56
#HDB#站点免费#站免 Sitewide Free Leech for 1 day on June 8th - 2024-06-02 Bonus point target of 50,000,000 BP in the pot was reached so we're announcing that June 8th will be 24-hour sitewide Free Leech (00:00 GMT - 24:00 GMT). Enjoy everyone! 注意:HDB 有流控规则,每下载 35 个种子需等待 15 分钟,需要大面积拖种子的朋友们可以现在就下载种子文件了。