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

Пребарај: #feng

当前筛选 #feng清除筛选
Galgame分享频道

@xiaomenggalgame · Post #182 · 21.12.2025 г., 00:04

染红的街道 ▎介绍 在私立アミティーエ学園上学的主人公,长濑准一和妹妹一起过着平凡的日常生活。一天,为了保护一个要被摩托车暴徒袭击的少女而夺走了她的初吻。少女不但没有感激,反而对他怀恨在心。 第二天,准一的班上来了一个转校生,她正是让准一前一天遇到的少女:片桐优姬,片桐财团的大小姐。那天晚上,准一的父亲打电话告诉他,两人的父母已经为他们订婚。因为糟糕的初次会面,二人关系很差。准一的父亲于是提出二人在第二年到来之前在休息日约会,并且作为约会的证据笑着拍摄合影。如果到了第二年二人还没有来电,就取消婚约。二人能在第二年到来之前坠入情网吗? ▎获取 PC&安卓仓库 ▎标签 系统:#PC#安卓#模拟器 类型:#galgame#NSWF#汉化 系列:#ONS 出版:#feng

Galgame分享频道

@xiaomenggalgame · Post #184 · 22.12.2025 г., 00:01

妹选拔总选举 ▎介绍 首先是仰天的一声凄厉的怒吼:男猪必须死啊啊啊啊啊啊啊啊啊啊啊啊!!!!!!!!!!!!!!!!!!——————(后面省略XXX个字) ―――4月1日。 今天是一个世间口胡满天飞的的日子,但是对我来说没有任何的关系。 说到原因,是因为今天是我重要的妹妹的生日。 作为大哥我有着祝福妹妹的义务。 还有我那个放荡的老头子,也难得地回家了一次后劈头对我说。 「其实啊……蒿太。其实你、还有364个妹妹」 「…………啊?」 老头子带着一头雾水的我来到了自己创立的私立橘学園。 在那里的364个新生,现在正焦急地等待着我的到来。 「久候多时了哦、欧尼酱!从今天开始我们大家、都是你的妹妹哦」 全校学生,366名。 其中男子只有我一人,剩余的365人——全员,妹妹。 「呃……我说,是真的吗?今天不是口胡节吗?」 ▎获取 PC仓库 ▎标签 系统:#PC#安卓#模拟器 类型:#galgame#NSWF#汉化#妹系 出版:#feng