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

Пребарај: #zagrebelsky

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

@savinobalzano · Post #1276 · 13.02.2026 г., 10:25

https://x.com/SavinoBalzano/status/2022255589804351969?s=20 Penso che le parole di #NicolaGratteri siano assolutamente inaccettabili e vadano condannate da tutti, senza se e senza ma. Ha affermato che per il NO voteranno le persone perbene, quelle che credono nella legalità; poi è passato a descrivere chi vota SÌ, senza menzionare altrettanta “gente perbene”. Se in entrambi gli schieramenti ci sono persone oneste, che senso ha citarle? E soprattutto: perché citare solo quelle che votano NO? Ne deriva una cesura evidente: le persone perbene e fiduciose nella legalità sarebbero naturalmente portate a votare NO; alle altre resterebbero due opzioni, astensione o SÌ. Non solo. Nella descrizione di chi vota SÌ compaiono indagati, imputati, massoneria deviata, centri di potere che non avrebbero vita facile con una giustizia efficiente (la mafia?). Il ragionamento di #Gratteri è un colabrodo, e non solo il suo, verrebbe da dire. Se la riforma trasformasse il PM in un super-poliziotto “cattivo”, perché indagati e imputati dovrebbero votare SÌ? Sono tutti fessi? Se il pubblico ministero è impregnato di cultura giurisdizionale ed è, per alcuni, addirittura il primo difensore del cittadino, perché i “cattivi” voterebbero SÌ? Sono tutti scemi? Pare votino SÌ anche gli avvocati: godrebbero forse nel vedere torchiare i propri assistiti e nel trovarsi di fronte un PM più potente e meno sensibile alle ragioni della difesa e della verità? Curioso, non vi pare? Con la vittoria del NO, questi presunti centri occulti di potere se la passerebbero molto peggio che con la vittoria del SÌ. Il NO, però, coincide con l’attuale assetto: oggi hanno davvero vita difficile? Sono in seria difficoltà? Questo non significa che con il SÌ andrebbero a gambe all’aria: significa solo che nemmeno oggi accade. Ci siamo? Inoltre, Gratteri sostiene che la ’ndrangheta (come se fosse un soggetto unitario, ma sorvoliamo) sia per il SÌ. Come lo sa? Sono state condotte indagini in merito? Esistono evidenze, intercettazioni, dichiarazioni di collaboratori che attestino tale orientamento? In assenza di tutto ciò, affermazioni di questa portata, rilasciate con tale leggerezza, risultano quantomeno significative. E inquietanti. La domanda che vorrei porre a Gratteri è semplice: ammesso — come lui stesso poi precisa — che esistano persone perbene che votano SÌ, esiste qualche lestofante che vota NO? Perché se si afferma che la gente onesta vota NO, si finisce inevitabilmente per escludere il contrario. Ho poi ascoltato la sua precisazione di ieri sera da Formigli e ne tengo conto. Ma non mi pare abbia risolto. Anzi. Per me Gratteri è un grande magistrato, patrimonio della Repubblica, ma temo si stia facendo prendere un tantino la mano in questa fase. E non solo lui. Questo atteggiamento è inaccettabile e antidemocratico. Così come è inaccettabile incensare (giustamente) l’autorevolezza di Gustavo #Zagrebelsky, ricordando che è stato Presidente della Corte costituzionale, e poi descrivere come impresentabile Augusto #Barbera — che ha ricoperto la stessa identica carica — solo perché, con pari autorevolezza, si schiera per il SÌ. Questo gioco al massacro è incivile e tradisce un nervosismo quantomeno sospetto. Una cosa, però, è certa: anche se vincerà il NO non ci sarà alcun sospiro di sollievo, perché tutto resterà com’è. E oggi le cose vanno male. Molto male.

Savino Balzano

@savinobalzano · Post #1002 · 05.05.2025 г., 12:13

https://x.com/SavinoBalzano/status/1919354130037887318?t=a04FHlBRULckWd4iO4TX3g&s=19 Sentite un po’ questi due e ditemi che ne pensate, perché davvero io comincio a non farcela più. Da un lato l’augusto #Augias: quello del #fascismo goniometrico (vi ricordate quando da Floris giudicava le braccia tese in base all’inclinazione?), quello per cui le Scritture ci inviterebbero al #riarmo. Dall’altro, #Zagrebelsky, quello che ne capisce di #Costituzione. Corrado ci dice che le democrazie sono a rischio. E uno pensa: “Vedrai che si riferisce al fatto che hanno fatto fuori #Georgescu in #Romania e che ora ci stiano provando con #Simion; sicuro si riferirà all’assurdità per cui un giudice di primo grado impedisce a #LePen di candidarsi all’Eliseo; certamente non gli saranno andati giù gli attentati a #Fico, a #Trump, la morte della guardia del corpo di #Orban; non dormirà per le recenti dichiarazioni di Thierry #Breton e per i rischi di messa al bando di #AfD; gli saranno tornate in mente le parole di #Oettinger, quando disse che i mercati ci avrebbero insegnato a votare". Che volete che vi dica? Forse pensa che impedire ai popoli di scegliere chi vogliono sia davvero un rischio grave per la tenuta democratica e costituzionale dei paesi coinvolti. Che ci sia un pericolo reale di implosione sistemica delle impalcature istituzionali. Che il contratto sociale stia andando a farsi benedire: cose così, di mero buonsenso. E invece no, bellezze mie. Vuole dire esattamente il contrario: che non è abbastanza, che non bastano gli interventi “tecnici” contro singole forze politiche, che le tecnocrazie non siano ancora sufficientemente attrezzate contro il pericolo che partiti votati dalla gente rappresenterebbero. Siamo a questo punto. Poi interviene quell’altro, il costituzionalista, il Presidente emerito della Corte Costituzionale. E che ti dice il Gustavo? Bene la #Germania… ma gli altri? Noi? Che si fa? Gente, io sono preoccupato. Ma preoccupato per davvero.