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

Пребарај: #riace

当前筛选 #riace清除筛选
Libertà è ragione

@libertaeragione · Post #4343 · 12.02.2025 г., 16:43

#Italia#UE È diventata definitiva la condanna dell'eurodeputato Mimmo #Lucano (#AVS|LEFT|G/EFA) a 18 mesi di reclusione, con pena sospesa, per un falso relativo a una delle 57 delibere che gli erano state addebitate dall'accusa in una indagine sulla gestione dell'accoglienza dei migranti a #Riace. Lo ha deciso la #Cassazione che ha rigettato il ricorso dei suoi legali. La Suprema Corte ha dichiarato poi inammissibile il ricorso della Procura generale di #ReggioCalabria per l'assoluzione di Lucano e degli altri imputati per reati di truffa ai danni dello Stato. Rigettato anche il ricorso in merito alle assoluzioni per le altre truffe e di falsi contestati solo a Lucano. @OsservatorioItaliano

Libertà è ragione

@libertaeragione · Post #4342 · 05.02.2025 г., 22:30

#Italia#Iran#Kurdistan È stata assolta, "per non avere commesso il fatto", Maysoon #Majidi, l'attivista curda di 29 anni in fuga dall'Iran che era stata arrestata il 31 dicembre del 2023 con l'accusa di essere una scafista, dopo essere sbarcata sulla costa di Roccella Jonica. La sentenza di assoluzione è stata emessa dal Tribunale di #Crotone. Maysoon era già stata liberata, dopo 300 giorni di carcere, a fine 2024 dopo che alcune testimonianze avevano reso, secondo la difesa, evidente l'estraneità all'accusa. Lei si è sempre difesa, sostenendo di essere una regista fuggita al regime degli ayatollah. A scagionarla anche colui che realmente secondo alcune testimonianze governava la nave, costretto dai trafficanti di esseri umani a farlo. In aula ha confermato che la 28enne era una passeggera come le altre. È importante sottolineare la presenza costante durante tutte le udienze del sindaco di #Riace e deputato europeo di #AVS|LEFT|G/EFA Mimmo #Lucano che le aveva anche concesso la cittadinanza onoraria dopo la revoca della reclusione cautelare. @OsservatorioItaliano

Libertà è ragione

@libertaeragione · Post #4261 · 12.10.2024 г., 20:37

#Italia#Calabria La Corte dei Conti della Regione Calabria ha disposto in data 10 ottobre che alla Presidenza del Consiglio dei Ministri siano versati 4,2 milioni di euro a titolo di risarcimento, a seguito della condanna di 40 soggetti, tra ex amministratori di enti locali calabresi e di società cooperative e associazioni aventi sede in provincia di #Cosenza, #Catanzaro, #Crotone e #ReggioCalabria, tra cui anche l'ex sindaco di #Riace Mimmo #Lucano (#AVS|LEFT|G\EFA). Le indagini, partite nel marzo 2017, avevano posto in evidenza gravi irregolarità che determinavano un ingiustificato arricchimento dei beneficiari delle risorse pubbliche. Dalla sentenza risulta che Salvatore #Mazzeo, delegato per la gestione dell’emergenza migranti della Regione Calabria, avesse «accordato affidamenti a strutture prive di esperienza nel settore e/o che non avevano ancora la disponibilità di immobili nei quali allocare i migranti; favorito attraverso accordi intercorsi con le società affidatarie alcune strutture concordando la possibilità di riconoscere alle stesse, senza alcuna motivazione, il corrispettivo giornaliero massimo per ogni singolo migrante; concesso affidamenti ad Enti locali senza che gli stessi avessero presentato alcuna offerta, ricevendo compensi senza emettere fatture o documenti equipollenti». Fonte: Corriere della Calabria @OsservatorioItaliano