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

Пребарај: #aggressioni

当前筛选 #aggressioni清除筛选
Savino Balzano

@savinobalzano · Post #741 · 11.09.2024 г., 13:46

https://x.com/SavinoBalzano/status/1833864211794927631?t=HFQbCJTpBTbDiRYaj2qcZw&s=19 Due parole sulle #aggressioni a danno del personale sanitario negli #ospedali. In questi giorni ne abbiamo sentite di tutti i colori. A proposito di quella avvenuta presso il #Riuniti di #Foggia, si è parlato - in un servizio di TgDraghi (di seguito, per semplicità, TgD) - della #criminalità nella provincia, della quarta #mafia financo, dello scioglimento del comune per infiltrazioni. A detta loro (questo perché hanno una considerazione e un rispetto di chi ascolta pari a zero), a menare negli ospedali ci sarebbero solo gli affiliati a qualche clan. Tutto molto interessante: in effetti la criminalità è una piaga drammatica nel foggiano (e non solo), ma vi pare possa rappresentare la causa principale di quanto accade? Dopotutto, a pensarci, le aggressioni avvengono un pò ovunque sul territorio nazionale, anche laddove le mafie non rappredentano un prodotto dop o docg, e soprattutto si realizzano principalmente nel pronto soccorso. Un pò meno in radiologia e cardiologia, diciamo. C'è chi vuole introdurre un manager per la sicurezza, chi invoca l'intervento dell'esercito (sic!) a presidio degli ospedali. Ne emerge un quadro a dir poco sconcertante: i sanitari che si difendono dai cittadini ricorrendo ai militari. Ha richiamato nella mia mente l'immagine dei forni presi d'assalto dai poveracci ne I promessi sposi: dite che la rievocazione abbia un senso? Magari il parallelo è fortino, ma vediamo. Nel XII capitolo la gente affamata e infuriata aggredisce un povero garzone che portava del pane, poi si dirige al forno delle Grucce per depredare e distruggere. E pure in quella circostanza si invoca l'intervento del capitano di giustizia, il quale risponde dispiegando la forza dei suoi alabardieri. Il #popolo non aveva accesso al pane, un bene essenziale per la sua sopravvivenza, come oggi non approda alla #cura, alla tutela della #salute, altrettanto irrinunciabile. In entrambi i casi, la violenza si esercita tra "innocenti": chi non ha il pane se la prende col garzone e chi non riesce a curarsi se la prende con medici e infermieri. Aggredire un innocente è ovviamente sbagliato, oltre che controproducente, ma è altrettanto necessario comprendere il moto interiore. Vi siete mai trovati in un pronto soccorso con vostro figlio di pochi mesi febbricitante, senza sapere che cavolo abbia, per ore e ore al freddo, senza riuscire a parlare con un medico? Provate a immaginare cosa si possa provare. Manzoni critica la folla, la considera violenta e irrazionale, miseramente informe, la osserva quasi con disprezzo. Non si può ovviamente giustificare la violenza, soprattutto se esercitata su chi non ha alcuna colpa circa la deprecabile situazione della nostra #sanità pubblica, però manco a dire che chi si incazza sia un matto invasato. Il pane mancava perché il Governatore ne impose l'aumento del costo e le cure mancano perché qualcuno ha deciso di falcidiare la #SanitàPubblica prosciugandone le risorse, a vantaggio di qualcun altro. La storia del nostro #SistemaSanitarioNazionale quale fiore all'occhiello è ormai tramontata, è un lontano ricordo, e bisognerebbe domandarsi il perché. Trovo indegna, odiosa verso il popolo, la totale assenza di una riflessione seria sulle cause che hanno condotto allo sfacelo. Nessun riferimento, ad esempio, al grave definanziamento che la nostra sanità ha subito, soprattutto dal 2011 in poi, proprio a seguito di una letterina velenosa inviata dalla #Bce al nostro #Governo. E chi c'era tra i firmatari di quella letterina magica? C'era guarda caso un altro Governatore. Proprio lui, il nostro orgoglio nazionale, il migliore di tutti, il salvatore dell'#Italia e dell'#Europa, nientemeno che #MarioDraghi. Certe riflessioni ovviamente non ce le possiamo aspettare, saremmo ingenui, soprattutto se nella stessa edizione del TgD si descrive enfativamente il nuovo piano di #Draghi come una sorta di contemporanea rivelazione evangelica ad opera del sopraggiunto Messia. (...) CONTINUA SU X