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

Резултати

Пронајдени 3 слични објави

Пребарај: #gj

当前筛选 #gj清除筛选

中文名: 管家后宫学园 话数: 12 放送开始: 2010年1月5日 放送星期: 星期二 原作: 上月司(電撃文庫) 导演: 大槻敦史 ☺️评分:6.1 还行 🟢故事简介 外表好像描绘在画上的美国人的少年・日野秋晴,某天决意进入以超名门贵族小姐高中著称的“白丽陵学院”就读,原因是为了该学院新设的从育科课程。通过入学考试后,顺利进入“白丽陵学院”的秋晴,在学院遇到了幼年时的天敌少女・彩京朋美、容姿端丽却敌视秋晴的大小姐塞尼亚=伊织=弗蕾姆哈特、富有个性的小姐们(和女仆们)……以秋晴为中心的欢闹的学校生活就此展开! 🌐OneDrive:点击下载 🗂百度网盘:点击下载 📁往期番剧汇总表格:打开 🔐解压:blackcatunderthemoon 引索:#G#GJ 标签:#后宫#卖肉#轻改

中文名: 搞姬日常(伪姬物语) 话数: 13 放送开始: 2014年7月7日 放送星期: 星期一 导演: 柳瀬雄之 脚本: 兵頭一歩 分镜: 柳瀬雄之 ☺️评分:6.1 还行 💙故事简介 作品讲述了霜科学院高中2年生有川姬,在打工时因为过于可爱被女装控纠缠,试图将其照片售卖。被学生会所救,同时受到邀请加入之后女生限定的学生会。不过在透漏了自己的身份之后,仍然被以女装少年的身份邀请。 💔OneDrive:打开表格 😱百度网盘:点击下载 😄往期番剧汇总表格:打开 🔐解压:blackcatunderthemoon 引索:#G#GJ 标签:#漫改#搞笑#日常#校园 🗣请不要在讨论中打开链接,请使用频道消息的链接或者表格,讨论中的链接是失效的,百度网盘是自提取,如果没有自提取复制链接可以看到提取码,禁止在线解压

Пиу-Пиу 💃 Модный детский Показ все ближе! А участвуют в нем маленькие гости Выходного, которые проведут свой день, как большие Fashion модели: Прически и макияж, примерки и дефиле под громкие аплодисменты! А на память каждый Участник получит профессиональные фото своего выхода на подиум! Наши Партнеры : #mango, #terranova, #mikoyumi, #gj, #карамелли, #crokid Остался 1 день записи на кастинг: https://iamodel.ru/vykhodnoy?utm_source=tg&utm_campaign=promo26 #трцвыходной#люберцы#trcvykhodnoy#выходной#модныйпоказ#кастинг#звездывыходного#fashionshow#ямодель