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

Резултати

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

Пребарај: #industrialization

当前筛选 #industrialization清除筛选

ጠቅላይ ሚኒስትር ዐቢይ አሕመድ (ዶ/ር) የቡሳ ጎኖፋ ኦሮሚያ የተቀናጀ የምግብ ኢንዱስትሪ ግንባታን አስጀመሩ ******************* ዛሬ የተጀመረው የቡሳ ጎኖፋ ኦሮሚያ የተቀናጀ የምግብ ኢንዱስትሪ ግንባታ የበቆሎ እና የአኩሪ አተር ዱቄት እንዲሁም 14 ተጓዳኝ የበቆሎ ውጤት ምርቶችን ለማምረት የታቀደ መሆኑን ጠቅላይ ሚኒስትር ዐቢይ አሕመድ (ዶ/ር) ገለጹ። ጠቅላይ ሚኒስትሩ ባስተላለፉት መልዕክት፣ ፕሮጀክቱ ተጠናቆ ወደ ሥራ ሲገባ በቀን 2 ሺህ ቶን በቆሎ እና 120 ቶን አኩሪ አተር የማምረት አቅም ይኖረዋል። ፕሮጀክቱ ከ6 ሺህ 500 በላይ ለሚሆኑ ሠራተኞች ቋሚ እና ጊዜያዊ የሥራ ዕድል እንደሚፈጥር ጠቅላይ ሚኒስትሩ ጠቅሰዋል። አክለውም ለአካባቢው አርሶ አደሮች፣ ለኅብረት ሥራ ማኅበራት እና ለግል ዘርፍ አምራቾች የእሴት ሰንሰለትን በማገዝ ለአካባቢው አርሶ አደሮች ሰፊ ገበያ ይፈጥራል፣ የአካባቢውን ኢኮኖሚ ያሳድጋል ብለዋል። #EthiopianBroadcastingCorporation#Ethiopia#PMAbiyAhmed#Agriculture#Industrialization#EconomicGrowth

የሀገር ውስጥ ባለሀብቶች በማኑፋክቸሪንግ ዘርፍ በመሠማራት "የልዩ ኢኮኖሚ ዞኖች" እድል ተጠቃሚ እንዲሆኑ ጥሪ ቀረበ ************** የሀገር ውስጥ ባለሀብቶች ወደ ማኑፋክቸሪንግ ዘርፍ በመግባት በልዩ ኢኮኖሚ ዞኖች የተመቻቸው ልዩ እድል ተጠቃሚ እንዲሆኑ የኢንዱስትሪ ፓርኮች ልማት ኮርፖሬሽን የኦፕሬሽን ዘርፍ ምክትል ዋና ሥራ አስፈጻሚ አቶ ፍጹም ከተማ ጥሪ አቀረቡ። በንግድ ሥራ ላይ የተሰማሩ ባለሀብቶች ወደ ማኑፋክቸሪንግ ዘርፍ ቢገቡ ለሀገርም ሆነ ለራሳቸው የላቀ ውጤት ማስመዝገብ እንደሚችሉም ኃላፊው ጠቁመዋል። የኮርፖሬሽኑ ምክትል ዋና ሥራ አስፈጻሚ አቶ ፍጹም ከተማና የኮርፖሬሽኑ የሕግ መምሪያ ኃላፊ አቶ ታሪኩ አዱኛ ከኤፍ ኤም አዲስ 97.1 ጋር በነበራቸው ቆይታ፤ በዘርፉ እየተከናወኑ ያሉ የሪፎርም ሥራዎችንና የቀጣይ አቅጣጫዎችን አስመልክተው ሰፊ ማብራሪያ ሰጥተዋል። ልዩ ኢኮኖሚ ዞኖች ማኑፋክቸሪንግን፣ ቴክኖሎጂን፣ ሎጅስቲክስንና የነፃ ንግድ ቀጠናን በአንድ ላይ አቀናጅተው የያዙ መሆናቸውም በውይይቱ ተመላክቷል። የልዩ ኢኮኖሚ ዞንነት መስፈርቱን የሚያሟሉ የኢንዱስትሪ ፓርኮች ወደ ልዩ ኢኮኖሚ ዞንነት እንዲቀየሩ እየተደረገ ሲሆን፣ እስካሁንም 12ቱ ፓርኮች .....https://web.facebook.com/share/p/1DyCgYJedA/ #EthiopiaSEZ#IPDC#EconomicReform#Industrialization#InvestInEthiopia#ManufacturingAfrica