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

Пребарај: #fclokomotiv

当前筛选 #fclokomotiv清除筛选
Локо-пропаганда

@lokopropaganda · Post #988 · 08.10.2025 г., 11:24

👕 😉 😛 😉 😛 😉 🙃 😚 😉 🚆Салют паровозной братве! Не по сезону, но все-же. Давайте попробуем собрать кворум на новый тираж, а то осенняя хандра включила ностальгию, что аж спать не мог и ретро-дизайн замыслил. Итак, пожалуйста, внимательно читаем инфо ниже.👇 Футболки: 🟢Gildan Hammer (поплотнее, рукава подлинее) белые и тёмный “графит хизер”, 🟢Gildan Ultra Cotton (полегче, поуже, рукава покороче) белые. Принт (все три вида шелкографией): 🟢“Зелёный” для белых футболок, 🟢“Серый” для белых футболок, 🔘“Чёрный” для тёмного “графита хизер”. Внимательно смотрите на превью-картинки. Размеры (внимание, НЕ маломерки!): 🔴Белая Ultra Cotton S-XXL, 🔴Белая Hammer M-4XL (!!!), 🔴Темный Hammer “графит хизер” S-XXL. Актуальная размерная сетка также размещена в этом посте, в первых комментариях. Смотрите внимательно, измеряйте обязательно свой стафф. Цена: 🟢Готовое изделие в размерах от S до XXL = 2400р. 🟢Готовое изделие в размерах 3XL и 4XL = 2500р. Серьёзность намерений - предоплата 700р., остальная часть по готовности футболок к отправке. Пишем чётко в комментарии к этому посту✍️: ⏹размер, ⏹вид футболки, ⏹цвет футболки, ⏹дизайн принта, ⏹количество, если больше одной штуки. Пример - “XL, Hammer белая, зелёный”. Или “M, Ultra белая, серый". Или “S, Hammer хизер, чёрный, 2шт.". ⏰Собираемся составом до конца дня среды, 15 октября. Потом закрываем список и запускаем тираж в печать. Ориентир по готовности тиража - последние числа октября. Все вопросы в лс ✉️@motorscraft Цвета важны! Цвета нужны! Погнали! 😉 #локомотив#локо#фклм#fclokomotiv

Локо-пропаганда

@lokopropaganda · Post #1647 · 11.01.2026 г., 09:02

😚 😍 😛 😉 😛 😉 😚 😉 😉 🚂Ну здравствуй, паровозная братва! Помнишь? Завтра же день рождения - имени “ЛОКОМОТИВ” исполняется 90 лет! К этому событию, с трепетом в душе и огнём в сердце, подготовил не маленький такой сет, который должен стать центральным элементом в “красно-зелёной” коллекции. Каждая БУКВА в имени имеет свое повествование, о чем подробно написано в буклете и на вкладке, размер которых 150х150мм. Вся эта красота выполнена с четким пониманием, с полной ответственностью и большим уважением к спортивному обществу “Локомотив”, к московскому футбольному клубу, в частности. И с максимальным уважением к болельщикам, для которых слово “верность” не пустое. О значках сета конкретнее: 🔴Твёрдая эмаль, 🟢 Позолоченный сплав цинка, 🔴 Размер знака 40мм в высоту, 🟢 Крепление на 2 цангах, 🔴 Серьёзное оформление “regular edition” в виде двустороннего разворотного буклета с нумерацией тиража в ручную. И альтернативная “retro deluxe” версия в бархатной коробке с двусторонней вкладкой в виде открытки, также с нумерацией тиража, 🟢Доставка Яндекс и почта России 🔴No bron’ За реликвией welcome в лс @motorscraft📝 😉Подписывайтесь на Телеграм канал и не пропускайте новые релизы☝️ #значки#футбол#локомотив#локо#фклм#фклокомотив#fclm#fclokomotiv#oldschool#локомотив_90_лет

Локо-пропаганда

@lokopropaganda · Post #641 · 18.08.2025 г., 15:47

😉 😍 😛 😉 😛 😉 😚 😉 😉 ⚽️ Салют, паровозная братва и дорогие коллекционеры! Давняя задумка наконец-то материализовалась! Встречаем весьма не простой новый значок, идейно и мысленно заряженный пассионариями Л-3516, в коллаборации наших проектов! Огненная ярость и пламенный задор вселились в фаерок, и теперь он готов делиться своим светом и теплом с каждым, кто прикасается к нему, без остатка. Коль уж гореть, то гореть сгорая!🔥 🔴Мягкая эмаль. 🟢Чёрный крашенный металл. 🔴Эмаль, меняющая цвет при нагреве!🚂 🟢Размер 30мм в высоту. 🔴Крепление на 2 цангах. 🟢Сумасшедшее оформление и дополнение в виде двух крутых стикеров, фирменного коробка спичек🔥(для коллекционеров коробков зайдёт точно) и ещё одной бонусной наклейки. 🔴Вместе со значком идёт уважение от создателей каждому обладателю! А это важно! 🟢Демократичнаяценаданного релиза - 800р. 🔴ДоставкаЯндекс и почта России. 🟢No bron’ 😉🚂 За значкомвсем активным паровозам, коллекционерам и тем, кому пиротехника на секторах была в радость, welcome в лс@motorscraft✉️ ❗️ И ещё. Для тех, кто носит значки, всегда есть в наличии антивандальные крепления. Спрашивайте 👌 Подписывайтесь на Телеграм канал и не пропускайте новые релизы 😉 #значки#фалеристика#футбол#локомотив#локо#фклм#фклокомотив#fclm#fclokomotiv#oldschool#ultras