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

Резултати

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

Пребарај: #星

当前筛选 #星清除筛选
嗨皮快乐屋北京

@hpklwbj · Post #168289 · 25.03.2026 г., 03:46

北京司藤小姐🏠🦜W 萌神降临🩵Anglea👼🏻妹妹天然白虎 🉑现场表演拉丁舞舞蹈💃🏻 🩵百度可查询真实厦大校花 无风尘味 喜SM 🩵字母圈颜值☝🏻梯队(颜值身材御萝双修)表格在最下方 🩵05Age 170D 纯天然0整 🩵无纹身无不良嗜好不抽烟喝酒🍺 乖乖小白兔 任人拿捏🤏🏻单纯性格 #朝阳区 硬5 白小纯 白🐯#星 🩵开朗活泼性格好会给哥哥提供情绪价值 纯兼职 💙PS:每个月只开3-5天挣学费 约到即是赚到~甜心小法宝 情商智商双商在线

嗨皮快乐屋北京

@hpklwbj · Post #168100 · 25.03.2026 г., 02:23

北京司藤小姐🏠🦜W 萌神降临🩵Anglea👼🏻妹妹天然白虎 🉑现场表演拉丁舞舞蹈💃🏻 🩵百度可查询真实厦大校花 无风尘味 喜SM 🩵字母圈颜值☝🏻梯队(颜值身材御萝双修)表格在最下方 🩵05Age 170D 纯天然0整 🩵无纹身无不良嗜好不抽烟喝酒🍺 乖乖小白兔 任人拿捏🤏🏻单纯性格 #朝阳区 硬5 白小纯 白🐯#星 🩵开朗活泼性格好会给哥哥提供情绪价值 纯兼职 💙PS:每个月只开3-5天挣学费 约到即是赚到~甜心小法宝 情商智商双商在线

嗨皮快乐屋北京

@hpklwbj · Post #166263 · 18.03.2026 г., 04:42

北京小志🏠🦜W 萌神降临🩵Anglea👼🏻妹妹天然白虎 🉑现场表演拉丁舞舞蹈💃🏻 🩵百度可查询真实厦大校花 无风尘味 喜SM 🩵字母圈颜值☝🏻梯队(颜值身材御萝双修)表格在最下方 🩵05Age 170D 纯天然0整 🩵无纹身无不良嗜好不抽烟喝酒🍺 乖乖小白兔 任人拿捏🤏🏻单纯性格 #朝阳区 硬5 白小纯 白🐯#星 🩵开朗活泼性格好会给哥哥提供情绪价值 纯兼职 💙PS:每个月只开3-5天挣学费 约到即是赚到~甜心小法宝 情商智商双商在线

嗨皮快乐屋北京

@hpklwbj · Post #168504 · 25.03.2026 г., 20:19

北京小志🏠 首次登陆短开一周 小杨颖Angelababy 172E 硬5🦜 W起 富人哥哥的顶级玩具 🉑69 接吻 双飞 车震 有情趣 各种玩具 代开登机 满足大哥的一切需求 现在读于俄罗斯🇷🇺在读留学生 会流利俄语 🉑现场验正俄语多国语言切换!随意考核语言硬质学历 所有证件视频学信网🉑查 如假包换! 大学毕业于厦门大学 芭蕾舞系学生 一字马180横叉竖叉可现场展示 展示完再付款!真金不怕火炼~ 曾参加过PDE总决赛季军🥉 加金币项目:🉑潮噴! 🉑液T 🉑全能 #朝阳区#硬5#星

嗨皮快乐屋北京

@hpklwbj · Post #168314 · 25.03.2026 г., 19:27

北京小志🏠 首次登陆短开一周 小杨颖Angelababy 172E 硬5🦜 W起 富人哥哥的顶级玩具 🉑69 接吻 双飞 车震 有情趣 各种玩具 代开登机 满足大哥的一切需求 现在读于俄罗斯🇷🇺在读留学生 会流利俄语 🉑现场验正俄语多国语言切换!随意考核语言硬质学历 所有证件视频学信网🉑查 如假包换! 大学毕业于厦门大学 芭蕾舞系学生 一字马180横叉竖叉可现场展示 展示完再付款!真金不怕火炼~ 曾参加过PDE总决赛季军🥉 加金币项目:🉑潮噴! 🉑液T 🉑全能 #朝阳区#硬5#星

嗨皮快乐屋北京

@hpklwbj · Post #168212 · 25.03.2026 г., 03:45

北京司藤小姐🏠 首次登陆短开一周 小杨颖Angelababy 172E 硬5🦜 W起 富人哥哥的顶级玩具 🉑69 接吻 双飞 车震 有情趣 各种玩具 代开登机 满足大哥的一切需求 现在读于俄罗斯🇷🇺在读留学生 会流利俄语 🉑现场验正俄语多国语言切换!随意考核语言硬质学历 所有证件视频学信网🉑查 如假包换! 大学毕业于厦门大学 芭蕾舞系学生 一字马180横叉竖叉可现场展示 展示完再付款!真金不怕火炼~ 曾参加过PDE总决赛季军🥉 加金币项目:🉑潮噴! 🉑液T 🉑全能 #朝阳区#硬5#星

123•••89
ПретходнаСтраница 1 од 9Следна