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

Пребарај: #graduateshool

当前筛选 #graduateshool清除筛选

📚“IT Business” mutaxassisligi tinglovchilarining loyihalari taqdimoti o‘tkazildi 🇺🇿Batafsil ——— A presentation of the projects of the students of the “IT Business” specialty was held 🇬🇧Eng ——— Состоялась презентация проектов слушателей специальности “IT-бизнес” 🇷🇺Ru #GraduateShool#Presentation#IT_business Web-site | Telegram | Facebook | Instagram

📖Innovatsion tadbirkorlik sohasida O‘zbekiston-Gruziya biznes uchrashuvi bo‘lib o‘tdi. Tadbirda Gruziya tomonidan “Gruziya Banki” AJ hamkorligida axborot-kommunikatsiya texnologiyalari, dasturlash, biznes jarayonlarini avtomatlashtirish, elektron tijorat, audit, biznes konsalting kabi yo‘nalishlarda faoliyat olib boruvchi 14 ta Gruziya kompaniyalaridan 30 ga yaqin vakillari qatnashdilar. 🇺🇿Batafsil ___ 📖 TheUzbek-Georgian Business Networking Event held in the Field of Innovative Entrepreneurship The meeting aimed to further support information and communication technologies and innovative sectors in the development of innovative entrepreneurship in Uzbekistan. Approximately 30 representatives from 14 Georgian companies working in ICT, programming, business process automation, e-commerce, auditing, and business consulting attended the event. 🇬🇧Eng ___ 📖 Состоялась узбекско-грузинская бизнес-встреча в сфере инновационного предпринимательства В мероприятии приняли участие около 30 представителей 14 грузинских компаний, осуществляющих деятельность в сфере информационных и коммуникационных технологий, программирования, автоматизации бизнес-процессов, электронной коммерции, аудита, бизнес-консалтинга и т.д. 🇷🇺Ru #GraduateShool#InnovativeEconomy#Fintech Web-site | Telegram | Facebook | Instagram

Ispaniyaning qishloq xo‘jaligi yerlariga ilg‘or sug‘orish va o‘g‘itlash tizimlarini joriy etish sohasidagi yetakchi kompaniyasi bilan uchrashuv bo‘lib o‘tdi. 🇺🇿UZB ___ Meeting with the leading Spanish company in the field of implementing advanced irrigation systems for irrigation and fertilization of agricultural lands. 🇬🇧ENG ___ Проведена встреча с ведущей компанией Испании в сфере внедрения передовых ирригационных систем орошения и удобрения сельскохозяйственных угодий. 🇷🇺RU #GraduateShool#Spain#Meeting#Ritec Web-site | Telegram | Facebook | Instagram

Biznes va tadbirkorlik oliy maktabi tinglovchilari tomonidan tez ovqatlanish sohasidagi startap loyihalarining taqdimoti 🇺🇿Batafsil ——— Presentation of Fast Food Startup Projects by Students at the Graduate School of Business and Entrepreneurship 🇬🇧Eng ——— Презентация стартап-проектов в сфере быстрого питания слушателями Высшей школы бизнеса и предпринимательства 🇷🇺Ru #GraduateShool#Presentation#Start_up#PM Web-site | Telegram | Facebook | Instagram

🇺🇿Высшая школа бизнеса и предпринимательства при Кабинете Министров Республики Узбекистан объявляет конкурс на должность начальника отдела Информационно-коммуникационных технологий 📄 Срок принятия документов: 🗓 С 17 апреля по 1 мая 📭 Резюме можно отправить на адрес электронной почты: [email protected] 🔎Дополнительная информация 📍ул. Мирабадская 25 #GraduateShool#IT_Department#Head#Vacany 🌐Web-site | ✅Telegram | ✅Facebook | 🌐Instagram

🇺🇿Oʻzbekiston Respublikasi Vazirlar Mahkamasi huzuridagiBiznes va tadbirkorlik oliy maktabi Axborot-kommunikatsiya texnologiyalari bo‘limi boshlig‘i uchun tanlov e’lon qiladi 📖 Ma'lumotnomalarni (obyektivka) qabul qilish muddati: 📆 17-apreldan 1-mayga qadar ✉️Ma'lumotnomalaringizni ushbu pochta manziliga yuborishingiz mumkin: [email protected] 🔎Batafsil ma'lumot 📍Mirobod koʻchasi 25 #GraduateShool#IT_Department#Head#Vacany 🌐Web-site | ✅Telegram | ✅Facebook | 🌐Instagram

🇺🇿Oʻzbekiston Respublikasi Vazirlar Mahkamasi huzuridagiBiznes va tadbirkorlik oliy maktabi Inson resurslarini rivojlantirish va boshqarish bo‘limi boshlig‘i uchun tanlov e’lon qiladi❗️ 🔎Batafsil ma'lumot 📍Mirobod koʻchasi, 25 uy 📃Ma'lumotnomalarni (obyektivka) qabul qilish muddati: 📆 19-fevraldan 1-martga qadar 📩Ma'lumotnomalarni ushbu pochta manziliga yuboring: [email protected] #GraduateShool#Department#HR_Manager#Vacany Web-site | Telegram | Facebook | Instagram