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

Резултати

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

Пребарај: #turnnews

当前筛选 #turnnews清除筛选
8TURN • 에잇턴 • MNH ENT

@turn8entertaiment · Post #44238 · 26.04.2026 г., 11:04

🗣️: Привет, классный старший брат! 💐 (Держит розу) (Лежит на боку) (Моргает глазами) (Неожиданно падает с кровати) (Делает сальто на одной ноге) (Лежит на боку на полу) (Продолжает моргать глазами) — я влюбился 🗣️: Я долго думал, что сказать, и, поскольку Чон Хэмин уходит, решил просто зарегистрироваться... 🐋 — Лучше действовать, чем раздумывать!!! 🗣️: ㅃㅇ Готовимся к учебе 👋 — Удачи в учебе!!!! 🍀 🗣️: Хэмин, я здесь. — Вот здесь и здесь!!! ㅔ 🗣️: Хэмин, я снял это во время фан концерта, и мне оно так понравилось, что я хочу поделиться им с вами, ха-ха. Я так скучаю по моему мистеру Хэму!! (17) — Я просто хочу вернуться назад. — 190000 📢@Turn8Entertaiment For-8Turn #TurnNews #News

8TURN • 에잇턴 • MNH ENT

@turn8entertaiment · Post #43816 · 15.03.2026 г., 15:15

Перевод Хён, уже прошло 3 года. Всегда спасибо тебе! Благодаря тебе я набираюсь сил. Даже когда у меня нет энергии, ты поддерживаешь меня. Ты как настоящий ENFP — всегда яркий и тёплый. Давай и дальше идти вместе и создавать много ценных воспоминаний. С днём рождения! Наш Хэм-за, с днём рождения!! ♡ Я тебя поздравляю уже четвёртый год. За эти четыре года многое изменилось, но мои чувства не изменились. Я всегда буду на твоей стороне! Спасибо тебе, Хэмин ♡ Хэм-за, поздравляю с днём рождения! ♡ Уже четвёртый раз поздравляю тебя. Всегда заботься о себе, ешь вкусную еду и будь счастлив. Иногда бывает тяжело, но давай и дальше идти вместе. С днём рождения! Хэмин, ты для меня человек, который даёт много сил. Каждый раз, когда мне тяжело, я думаю о тебе и снова поднимаюсь. Твоя искренность и старание всегда вдохновляют. Я хочу и дальше поддерживать тебя и идти рядом. Спасибо тебе за всё. Всегда будь здоров и счастлив! Привет, Хэмин! С днём рождения. Ты очень тёплый и добрый человек. Хотя ты иногда говоришь, что не уверен в себе, для многих людей ты уже огромная поддержка. Надеюсь, ты будешь получать такую же любовь, какую даришь другим. Береги себя. Я всегда болею за тебя. Хэм-за! С днём рождения~~~ В этом году тоже улыбайся больше и будь счастлив. Я всегда буду рядом и поддерживать тебя Хэм-за, с днём рождения. Будь здоров и счастлив. Надеюсь, ты знаешь, как сильно мы тебя любим. И дальше дари нам свою улыбку. 📢@Turn8Entertaiment For-8Turn #TurnNews #News

8TURN • 에잇턴 • MNH ENT

@turn8entertaiment · Post #44428 · 10.05.2026 г., 07:24

#Twitter 📍 Обновление твиттера 8turnjapan KCONJAPAN2026 RECAP⚡ 🔥5/8 fri DANCE STAGE🕺 X STAGE🔨 ARTIST BOOTH VISIT🫶 🔥5/9 sat M COUNTDOWN STAGE💚 ARTIST BOOTH VISIT🫰 📢@Turn8Entertaiment For-8Turn #TurnNews #News

8TURN • 에잇턴 • MNH ENT

@turn8entertaiment · Post #44412 · 09.05.2026 г., 15:17

#Twitter 📍 Обновление твиттера 8TURN_official — KCON в Японии был просто потрясающим 💕 Увидимся в следующий раз ❤️ — It was so much fun at KCON JAPAN 💕 See you again next time ❤️ 📢@Turn8Entertaiment For-8Turn #TurnNews #News

123•••5•••10•••15•••20•••25•••30•••35•••40•••45•••50•••55•••60•••65•••6869
ПретходнаСтраница 1 од 69Следна