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

Резултати

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

Пребарај: #mako

当前筛选 #mako清除筛选
IB美术馆

@PaintingCollections2 · Post #3440 · 10.02.2026 г., 12:07

[MAKO]MAKO 2025.6.27—2025.10.27 画师:#MAKO 预览未展示全面,全部差分原图和整合压缩包请进入评论区或点击下方超链跳转查看 压缩包 MAKO老师的往期传送门(之后可能会有一期分裂成两期展示,我会标注出来也请注意查看捏) 2025.6.27—2025.10.27 2025.4.27—2025.6.30 2023.4.2—2024.8.16 —————————— 本频道分享的资源切勿进行买卖商用,如有条件还请在画师的赞助支持渠道获取赞助奖励 MAKO老师主页:PixivTwitterPatreonSubscribestarFantiaFanbox —————————— 资源有任何问题请加入下方聊天反馈群进行反馈,爱你们 图集主频道(临时复活版):@PaintingCollections2 聊天反馈撩骚群:@ChaoJiShiBu 游戏区分馆:@MoNvZhiJia23333 防失联及各附属频道导航:@IBgallery233 求物帖:传送门

Hashtags

IB美术馆

@PaintingCollections2 · Post #1222 · 06.07.2025 г., 04:16

[MAKO]MAKO 2023.4.2—2024.8.16 画师:#MAKO 预览未展示全面,全部差分原图和整合压缩包请进入评论区或点击下方超链跳转查看 压缩包 MAKO老师的往期传送门(之后可能会有一期分裂成两期展示,我会标注出来也请注意查看捏) 2025.4.27—2025.6.30 2023.4.2—2024.8.16 —————————— 本频道分享的资源切勿进行买卖商用,如有条件还请在画师的赞助支持渠道获取赞助奖励 MAKO老师主页:PixivTwitterPatreonSubscribestarFantiaFanbox —————————— 资源有任何问题请加入下方聊天反馈群进行反馈,爱你们 图集主频道(临时复活版):@PaintingCollections2 聊天反馈撩骚群:@ChaoJiShiBu 游戏区分馆:@MoNvZhiJia23333 防失联及各附属频道导航:@IBgallery233 求物帖:传送门

Hashtags

IB美术馆

@PaintingCollections2 · Post #1212 · 05.07.2025 г., 19:35

[MAKO]MAKO 2025.4.27—2025.6.30 画师:#MAKO 预览未展示全面,全部差分原图和整合压缩包请进入评论区或点击下方超链跳转查看 压缩包 MAKO老师的往期传送门(之后可能会有一期分裂成两期展示,我会标注出来也请注意查看捏) 2025.4.27—2025.6.30 —————————— 本频道分享的资源切勿进行买卖商用,如有条件还请在画师的赞助支持渠道获取赞助奖励 MAKO老师主页:PixivTwitterPatreonSubscribestarFantiaFanbox —————————— 资源有任何问题请加入下方聊天反馈群进行反馈,爱你们 图集主频道(临时复活版):@PaintingCollections2 聊天反馈撩骚群:@ChaoJiShiBu 游戏区分馆:@MoNvZhiJia23333 防失联及各附属频道导航:@IBgallery233 求物帖:传送门

Hashtags

djangoproject

@djangoproject · Post #314 · 26.04.2017 г., 16:41

https://github.com/aio-libs/aiohttp-mako #mako template renderer for #aiohttp.web based on aiohttp_jinja2. Library has almost same api and support python 3.5 (PEP492) syntax. It is used in aiohttp_debugtoolbar.

djangoproject

@djangoproject · Post #197 · 29.11.2016 г., 16:06

#Mako is a #template library written in Python. It provides a familiar, non-XML syntax which compiles into Python modules for maximum performance. Mako's syntax and #API borrows from the best ideas of many others, including #Django and #Jinja2 templates, #Cheetah, #Myghty, and #Genshi. Conceptually, Mako is an embedded Python (i.e. Python Server Page) language, which refines the familiar ideas of componentized layout and inheritance to produce one of the most straightforward and flexible models available, while also maintaining close ties to Python calling and scoping semantics. http://www.makotemplates.org/