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

Резултати

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

Пребарај: #rsa

当前筛选 #rsa清除筛选

Драконовы Горы в ЮАР – место, где реальность сливается с фантазией Драконовы Горы в ЮАР – удивительный и мистический уголок природы, который поражает своей красотой и величием. Массивная горная цепь, вытянувшаяся на горизонте, словно обиталище сказочных драконов, включает в себя самые высокие горы в ЮАР. Большая часть территорий Драконовых гор объявлена объектом Всемирного наследия ЮНЕСКО. ____ The Drakensberg in South Africa – a place where reality meets fantasy The Drakensberg in South Africa is a mystical corner of nature that amazes with their beauty and grandeur. The massive mountain range, stretching across the horizon like the dwelling place of fairy dragons, includes the highest mountains in South Africa. Much of the Drakensberg area has been declared a UNESCO World Heritage Site. #RSA # ЮАР

Hashtags

Comisia Electorală Centrală

@cecmoldova · Post #3578 · 04.05.2026 г., 07:51

‼️𝐍𝐮𝐦ă𝐫𝐮𝐥 𝐚𝐥𝐞𝐠ă𝐭𝐨𝐫𝐢𝐥𝐨𝐫, î𝐧𝐬𝐜𝐫𝐢ș𝐢 î𝐧 𝐑𝐞𝐠𝐢𝐬𝐭𝐫𝐮𝐥 𝐝𝐞 𝐒𝐭𝐚𝐭 𝐚𝐥 𝐀𝐥𝐞𝐠ă𝐭𝐨𝐫𝐢𝐥𝐨𝐫, 𝐥𝐚 𝐝𝐚𝐭𝐚 𝐝𝐞 𝟒 𝐦𝐚𝐢 𝟐𝟎𝟐𝟔, 𝐞𝐬𝐭𝐞 𝐝𝐞 𝟑 𝟑𝟎𝟒 𝟖𝟐𝟖 #CECMoldova#DemocrațiaContează#RSA

Comisia Electorală Centrală

@cecmoldova · Post #3539 · 01.04.2026 г., 14:08

‼️𝐍𝐮𝐦ă𝐫𝐮𝐥 𝐚𝐥𝐞𝐠ă𝐭𝐨𝐫𝐢𝐥𝐨𝐫, î𝐧𝐬𝐜𝐫𝐢ș𝐢 î𝐧 𝐑𝐞𝐠𝐢𝐬𝐭𝐫𝐮𝐥 𝐝𝐞 𝐒𝐭𝐚𝐭 𝐚𝐥 𝐀𝐥𝐞𝐠ă𝐭𝐨𝐫𝐢𝐥𝐨𝐫, 𝐥𝐚 𝐝𝐚𝐭𝐚 𝐝𝐞 𝟏 𝐚𝐩𝐫𝐢𝐥𝐢𝐞 𝟐𝟎𝟐𝟔, 𝐞𝐬𝐭𝐞 𝐝𝐞 𝟑 𝟑𝟎𝟒 𝟔𝟗𝟏 #CECMoldova#DemocrațiaContează#RSA

Comisia Electorală Centrală

@cecmoldova · Post #3502 · 02.03.2026 г., 11:19

‼️𝐍𝐮𝐦ă𝐫𝐮𝐥 𝐚𝐥𝐞𝐠ă𝐭𝐨𝐫𝐢𝐥𝐨𝐫, î𝐧𝐬𝐜𝐫𝐢ș𝐢 î𝐧 𝐑𝐞𝐠𝐢𝐬𝐭𝐫𝐮𝐥 𝐝𝐞 𝐒𝐭𝐚𝐭 𝐚𝐥 𝐀𝐥𝐞𝐠ă𝐭𝐨𝐫𝐢𝐥𝐨𝐫, 𝐥𝐚 𝐝𝐚𝐭𝐚 𝐝𝐞 𝟐 𝐦𝐚𝐫𝐭𝐢𝐞 𝟐𝟎𝟐𝟔, 𝐞𝐬𝐭𝐞 𝐝𝐞 𝟑 𝟐𝟗𝟕 𝟗𝟔𝟎 #CECMoldova#DemocrațiaContează#RSA

Comisia Electorală Centrală

@cecmoldova · Post #3467 · 02.02.2026 г., 12:52

‼️𝐍𝐮𝐦ă𝐫𝐮𝐥 𝐚𝐥𝐞𝐠ă𝐭𝐨𝐫𝐢𝐥𝐨𝐫, î𝐧𝐬𝐜𝐫𝐢ș𝐢 î𝐧 𝐑𝐞𝐠𝐢𝐬𝐭𝐫𝐮𝐥 𝐝𝐞 𝐒𝐭𝐚𝐭 𝐚𝐥 𝐀𝐥𝐞𝐠ă𝐭𝐨𝐫𝐢𝐥𝐨𝐫, 𝐥𝐚 𝐝𝐚𝐭𝐚 𝐝𝐞 𝟐 𝐟𝐞𝐛𝐫𝐮𝐚𝐫𝐢𝐞 𝟐𝟎𝟐𝟔, 𝐞𝐬𝐭𝐞 𝐝𝐞 𝟑 𝟐𝟗𝟖 𝟖𝟗𝟒 #CECMoldova#DemocrațiaContează#RSA

Comisia Electorală Centrală

@cecmoldova · Post #3444 · 02.01.2026 г., 09:35

‼️𝐍𝐮𝐦ă𝐫𝐮𝐥 𝐚𝐥𝐞𝐠ă𝐭𝐨𝐫𝐢𝐥𝐨𝐫, î𝐧𝐬𝐜𝐫𝐢ș𝐢 î𝐧 𝐑𝐞𝐠𝐢𝐬𝐭𝐫𝐮𝐥 𝐝𝐞 𝐒𝐭𝐚𝐭 𝐚𝐥 𝐀𝐥𝐞𝐠ă𝐭𝐨𝐫𝐢𝐥𝐨𝐫, 𝐥𝐚 𝐝𝐚𝐭𝐚 𝐝𝐞 𝟐 𝐢𝐚𝐧𝐮𝐚𝐫𝐢𝐞 𝟐𝟎𝟐𝟔, 𝐞𝐬𝐭𝐞 𝐝𝐞 𝟑 𝟐𝟗𝟗 𝟕𝟗𝟒 #CECMoldova#DemocrațiaContează#RSA

Comisia Electorală Centrală

@cecmoldova · Post #3082 · 01.08.2025 г., 10:19

‼️𝐍𝐮𝐦ă𝐫𝐮𝐥 𝐚𝐥𝐞𝐠ă𝐭𝐨𝐫𝐢𝐥𝐨𝐫, î𝐧𝐬𝐜𝐫𝐢ș𝐢 î𝐧 𝐑𝐞𝐠𝐢𝐬𝐭𝐫𝐮𝐥 𝐝𝐞 𝐒𝐭𝐚𝐭 𝐚𝐥 𝐀𝐥𝐞𝐠ă𝐭𝐨𝐫𝐢𝐥𝐨𝐫, 𝐥𝐚 𝐝𝐚𝐭𝐚 𝐝𝐞 𝟏 𝐚𝐮𝐠𝐮𝐬𝐭 𝟐𝟎𝟐𝟓, 𝐞𝐬𝐭𝐞 𝐝𝐞 𝟑 𝟐𝟗𝟖 𝟒𝟒𝟑 #CECMoldova#DemocrațiaContează#RSA

Comisia Electorală Centrală

@cecmoldova · Post #2976 · 01.07.2025 г., 14:43

🔵𝐍𝐮𝐦ă𝐫𝐮𝐥 𝐚𝐥𝐞𝐠ă𝐭𝐨𝐫𝐢𝐥𝐨𝐫, î𝐧𝐬𝐜𝐫𝐢ș𝐢 î𝐧 𝐑𝐞𝐠𝐢𝐬𝐭𝐫𝐮𝐥 𝐝𝐞 𝐒𝐭𝐚𝐭 𝐚𝐥 𝐀𝐥𝐞𝐠ă𝐭𝐨𝐫𝐢𝐥𝐨𝐫, 𝐥𝐚 𝐝𝐚𝐭𝐚 𝐝𝐞 𝟏 𝐢𝐮𝐥𝐢𝐞 𝟐𝟎𝟐𝟓, 𝐞𝐬𝐭𝐞 𝐝𝐞 𝟑 𝟐𝟗𝟕 𝟓𝟗𝟔 #CECMoldova#DemocrațiaContează#RSA

Comisia Electorală Centrală

@cecmoldova · Post #2911 · 02.06.2025 г., 14:04

📌𝐍𝐮𝐦ă𝐫𝐮𝐥 𝐚𝐥𝐞𝐠ă𝐭𝐨𝐫𝐢𝐥𝐨𝐫, î𝐧𝐬𝐜𝐫𝐢ș𝐢 î𝐧 𝐑𝐞𝐠𝐢𝐬𝐭𝐫𝐮𝐥 𝐝𝐞 𝐒𝐭𝐚𝐭 𝐚𝐥 𝐀𝐥𝐞𝐠ă𝐭𝐨𝐫𝐢𝐥𝐨𝐫, 𝐥𝐚 𝐝𝐚𝐭𝐚 𝐝𝐞 𝟐 𝐢𝐮𝐧𝐢𝐞 𝟐𝟎𝟐𝟓, 𝐞𝐬𝐭𝐞 𝐝𝐞 𝟑 𝟐𝟗𝟕 𝟒𝟗𝟗 #CECMoldova#DemocrațiaContează#RSA

Comisia Electorală Centrală

@cecmoldova · Post #2818 · 02.05.2025 г., 12:32

📌𝐍𝐮𝐦ă𝐫𝐮𝐥 𝐚𝐥𝐞𝐠ă𝐭𝐨𝐫𝐢𝐥𝐨𝐫, î𝐧𝐬𝐜𝐫𝐢ș𝐢 î𝐧 𝐑𝐞𝐠𝐢𝐬𝐭𝐫𝐮𝐥 𝐝𝐞 𝐒𝐭𝐚𝐭 𝐚𝐥 𝐀𝐥𝐞𝐠ă𝐭𝐨𝐫𝐢𝐥𝐨𝐫, 𝐥𝐚 𝐝𝐚𝐭𝐚 𝐝𝐞 𝟐 𝐦𝐚𝐢 𝟐𝟎𝟐𝟓, 𝐞𝐬𝐭𝐞 𝐝𝐞 𝟑 𝟐𝟗𝟕 𝟓𝟎𝟐 #CECMoldova#DemocrațiaContează#RSA

Comisia Electorală Centrală

@cecmoldova · Post #2780 · 01.04.2025 г., 14:13

📌𝐍𝐮𝐦ă𝐫𝐮𝐥 𝐚𝐥𝐞𝐠ă𝐭𝐨𝐫𝐢𝐥𝐨𝐫, î𝐧𝐬𝐜𝐫𝐢ș𝐢 î𝐧 𝐑𝐞𝐠𝐢𝐬𝐭𝐫𝐮𝐥 𝐝𝐞 𝐒𝐭𝐚𝐭 𝐚𝐥 𝐀𝐥𝐞𝐠ă𝐭𝐨𝐫𝐢𝐥𝐨𝐫, 𝐥𝐚 𝐝𝐚𝐭𝐚 𝐝𝐞 𝟏 𝐚𝐩𝐫𝐢𝐥𝐢𝐞 𝟐𝟎𝟐𝟓, 𝐞𝐬𝐭𝐞 𝐝𝐞 𝟑 𝟐𝟗𝟕 𝟑𝟖𝟔 #CECMoldova#DemocrațiaContează#RSA

12
ПретходнаСтраница 1 од 2Следна