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

Пребарај: #minniti

当前筛选 #minniti清除筛选
Ultimora.net - POLITICS

@ultimoraPOLITICS · Post #39827 · 02.06.2022 г., 08:56

#Italia#Vaticano ❗️Fonti CEI: Papa Francesco avrebbe disertato il Forum del Mediterraneo di Firenze non per problemi fisici, ma per la presenza dell'ex ministro degli interni Marco #Minniti (PD). Il Papa avrebbe descritto Minniti come "un criminale di guerra". @UltimoraPolitics

Libertà è ragione

@libertaeragione · Post #4352 · 02.03.2025 г., 16:00

#Italia#Libia#CPI#Factchecking Prossimamente dovrebbe essere discussa alla #Camera la mozione concernente la sfiducia individuale al Ministro della Giustizia Carlo #Nordio (#FdI|ECR) per i fatti relativi al caso #Almasri. Qualche settimana fa il Ministro della Giustizia Carlo Nordio in audizione alla Camera dei Deputati ha dichiarato di non aver dato seguito al mandato di cattura emesso dalla Corte Penale Internazionale a carico del generale libico Almasri perché il mandato sarebbe stato illegittimo e di conseguenza inapplicabile. Ma le cose stanno davvero così? Facciamo chiarezza. Innanzitutto il generale Almasri risulta accusato dalla corte dell'AJA di crimini contro l'umanità, avvenuti nei centri di detenzione libici, dove la Libia manda chiunque cerchi di lasciare il Paese per emigrare verso l'Italia, istituiti sulla base del memorandum d'intesa tra l'Italia e la Libia firmato dall'ex Ministro dell'Interno Marco #Minniti (#PD|S&D). L'art. 4 della legge 20 dicembre 2012, n. 237 dispone che «il ministro della Giustizia da corso alle richieste formulate dalla Corte penale internazionale, trasmettendole al Procuratore generale presso la Corte d’Appello di Roma perché ne dia esecuzione». Quando invece sono necessarie ulteriori indagini il Ministro della Giustizia «ove ritenga che ne ricorra la necessità, concorda la propria azione con altri ministri interessati, con altre istituzioni o con altri organi dello Stato. Al ministro della Giustizia compete altresì di presentare alla Corte, ove occorra, atti e richieste» come previsto dall'art. 2 della suddetta legge. Questo articolo, applicato con una certa fantasia interpretativa, ha permesso al ministro Nordio di concordare con il Ministro dell'Interno Matteo #Piantedosi prima la scarcerazione del generale libico, atto dovuto in quanto la convalida dell'arresto non poteva avvenire senza il parere positivo di Via Arenula 70, e poi il successivo rimpatrio in Libia per motivi di "sicurezza nazionale" in quanto individuo pericoloso secondo il Viminale. Infine, per concludere il quadro giuridico è bene specificare che il Procuratore generale, ricevuti gli atti, chiede alla Corte d’Appello l’applicazione della misura della custodia cautelare nei confronti della persona della quale è richiesta la consegna (art. 11, co. 1). La Corte d’Appello di Roma, sulla richiesta, decide con il rito camerale. Può dichiarare che non sussistono le condizioni per la consegna soltanto se non è stato emesso dalla Corte penale internazionale un provvedimento restrittivo della libertà personale; se non vi è corrispondenza tra l’identità della persona richiesta e quella della persona oggetto della procedura di consegna; se la richiesta contiene disposizioni contrarie ai principi fondamentali dell’ordinamento giuridico dello Stato; se, per lo stesso fatto e nei confronti della stessa persona, è stata pronunciata nello Stato italiano sentenza irrevocabile (art. 13, co. 3). Quindi, in conclusione, le dichiarazioni del ministro Nordio che, ricordiamo, era anche un pubblico ministero in passato, circa i "pasticci" con la data errata dei fatti o la mancata traduzione in italiano del mandato di cattura internazionale, di una gravità tale da far commettere un reato al ministro qualora avesse dato seguito alla richiesta del tribunale dell'AJA, risultano infondate e denotano un operato negligente del Ministro Nordio nei confronti dell'istituzione dello Statuto di Roma. @OsservatorioItaliano