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

Резултати

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

Пребарај: #rusofobia

当前筛选 #rusofobia清除筛选
Russian Embassy in Albania

@rusembalb · Post #7631 · 23.01.2026 г., 11:56

⚡️ Nga konferenca për shtyp e Përfaqësueses zyrtare të Ministrisë së Punëve të Jashtme të Rusisë, M.V. Zaharova, për çështjet aktuale të politikës së jashtme (22 janar 2026) Për axhendën e Ministrit të Punëve të Jashtme të Rusisë, S.V. Lavrov Teza të shkurtra: #KrimetERegjimitTëKievit#Terrorizmi • Regjimi neonazist i Kievit vazhdon të sulmojë objekte civile, duke terrorizuar popullsinë paqësore të Rusisë. Gjatë javës së kaluar, nga bombardimet dhe goditjet me drone ukrainase u lënduan 78 banorë civilë. Prej tyre, 14 kanë humbur jetën, 72 janë plagosur, duke përfshirë tre fëmijë. ❗️ I njëjti nazizëm, i cili u mund 80 vjet më parë, sërish po rimëkëmbet në mënyrë të plotë. Tani ai po fshihet pas fjalëve për demokraci, liri, identitet kombëtar në Ukrainë — në fakt, e gjitha kjo është kamuflazh, rrjetë maskimi, pluhur. • Organet ruse të zbatimit të ligjit vazhdojnë të vendosin para përgjegjësisë penale kriminelët luftarakë ukrainas dhe mercenarët e huaj. <...> Me 13 vjet burgim, në mungesë, është dënuar mercenari britanik Reginald Francis Steele, i cili mori pjesë në veprime luftarake si pjesë e Forcave të Armatosura të Ukrainës (është shpallur në ndjekje ndërkombëtare). #Irani • Me kënaqësi vërejmë normalizimin e vazhdueshëm të situatës në Iran pas trazirave dhe akteve të mosbindjes, të nxitura nga jashtë. • Përpjekjet e autoriteteve për të siguruar rendin publik dhe marshet e mijëra qytetarëve iranianë në mbështetje të sistemit kushtetues, sovranitetit dhe pavarësisë së vendit prishën planet shkatërruese për destabilizim. • Këtë fakt u detyruan ta pranonin edhe forcat e huaja armike, të cilat u përpoqën të zbatonin në Republikën Islame skenarin e një "revolucioni me ngjyra". Gjaku i derdhur në rrugët e Iranit është mbi ndërgjegjen e tyre. • Edhe njëherë shprehim solidaritetin tonë me popullin iranian dhe u shprehim ngushëllimet tona të sinqerta familjarëve dhe të afërmve të të vrarëve. #Moldavia#Rusofobia • Autoritetet e vendit, me pretekstin e një kërcënimi rus që nuk ekziston, vazhdojnë të promovojnë idenë e bashkimit me Rumaninë. • Një impuls të ri kësaj fushate i ka dhënë Presidentja Sandu, e cila ka shtetësi rumune. Më 12 janar të këtij viti, ajo deklaroi se do të votonte e para për këtë nismë, nëse do të shpallej një referendum përkatës. <...> Si me urdhër, thuajse të gjithë përfaqësuesit e udhëheqjes moldave, ekspertët e pro-qeveritarë dhe gazetarët gjithashtu janë shprehur pro "axhendës së bashkimit" me Rumaninë. Ndërkohë, askush nuk i ka pyetur vetë qytetarët moldavë. • Më shumë se 60% e moldavëve të anketuar (sipas anketimeve sociale) janë kundër bashkimit me Rumaninë. Kjo është një shenjë se edhe përmes propagandës totale që zhvillon Sandu me para perëndimore, nuk po arrin t'u heqë moldavëve vetëdijen e tyre kombëtare. #RusiaNdihmon#RusiaBolivia#NdihmëHumanitare • Më 13 janar në Bolivi u zhvillua ceremonia zyrtare e transferimit falas të 1416 tonëve të grurit rus, të blerë me kontributin e vendit tonë në fondin e Programit Botëror të Ushqimit #OKB. • Qeveria e Rusisë përfshiu Bolivinë në listën e vendeve përfituese të ndihmës ushqimore vendase gjatë shpërndarjes së kontributit vjetor shtesë të vendit tonë në Fondin e Programit Botëror të Ushqimit të OKB-së. • Rusia demonstroi edhe një herë se është një partner i besueshëm, i gatshëm të ofrojë ndihmë solide në situata krizash. La Paz shprehu mirënjohjen e tij për Qeverinë e vendit tonë për ndihmën humanitare. #AziaJuglindore#KriminalitetiNderkufitar • Kohët e fundit në vendet e Azisë Juglindore është rënduar problemi i të ashtuquajturave qendra mashtrimi, në punën e të cilave përfshihen me dhunë qytetarë nga shtete të ndryshme, duke përfshirë edhe Rusinë. Aktiviteti i organizatave të tilla kriminale është regjistruar, veçanërisht, në Myanmar, Kamboxhia, Tajlandë. • Ky aktivitet i paligjshëm, duke përfshirë manipullimet financiare dhe tregtinë me qenie njerëzore, mbetet një nga sfidat serioze si për vetë vendet, në territorin e të cilave ajo zhvillohet, ashtu edhe për fqinjët e tyre më të afërt. Nga kjo vuan i gjithë rajoni.