@ULTIMORAPOLITICS · Post #41871 · 21.10.2022 г., 08:15
Alessandro #DiBattista: "Ma se Berlusconi osa un minimo discostarsi dalla narrazione Nato della guerra in Ucraina ecco che parte la vendetta della vodka." @UltimoraPolitics
Hashtags
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
Пребарај: #dibattista
@ULTIMORAPOLITICS · Post #41871 · 21.10.2022 г., 08:15
Alessandro #DiBattista: "Ma se Berlusconi osa un minimo discostarsi dalla narrazione Nato della guerra in Ucraina ecco che parte la vendetta della vodka." @UltimoraPolitics
Hashtags
@UltimoraPOLITICS · Post #40974 · 08.08.2022 г., 16:26
#Italia #M5S, anche Alessandro #DiBattista non sarà candidato. @UltimoraPolitics
Hashtags
@Ultimorapolitics · Post #37673 · 26.04.2022 г., 21:13
#Italia#Francia Alessandro #DiBattista: "L'incontro con i gilet gialli? Non fu una mia iniziativa, fu una iniziativa di Di Maio." @UltimoraPolitics
Hashtags
@lafionda · Post #6564 · 13.09.2025 г., 08:56
https://x.com/SavinoBalzano/status/1966783970898567602?t=zZL69h7Q7TRi-d5pojuqBw&s Desidero esprimere la mia più convinta e sentita solidarietà ad Alessandro Di Battista. Come sapete, presso il centro sociale La Strada, a #Roma, è stato collocato un ordigno artigianale insieme a uno striscione insultante contro di lui. Un gesto schifoso, un grave tentativo di intimidazione contro una persona che lotta per le proprie idee, in difesa di un popolo inerme che subisce il male assoluto. Dico due cose. La prima: chiunque si indigni per la violenza che vediamo - ora ad esempio negli Stati Uniti - ha il dovere di condannare anche questo atto vile. Se crediamo nella democrazia, nella libertà, in un mondo dove i nostri figli possano battersi per le proprie idee, dobbiamo schierarci contro questa vile minaccia e stare accanto ad Alessandro. Vale per chi, come me, condivide le sue posizioni sul Medio Oriente, ma anche per tutti gli altri. Tutti, senza eccezioni. La seconda: Alessandro #DiBattista è stato oggetto di una campagna di delegittimazione ignobile. Una parte della nostra stampa si è accanita contro di lui con inchieste ridicole, costruite per denigrare la persona e indebolirne le idee. Tentativi ovviamente vani. Sapete di chi parlo: prezzolati, voltagabbana, zerbini che non meritano nemmeno di essere nominati. Per mesi hanno provato a nascondere ciò che accade a #Gaza, insultando chi difende le vite di quei bambini. Poi si mostrano in video, falsamente sconvolti quando la violenza colpisce qualcuno a loro più gradito. Questa incoerenza è intollerabile, tipica dei peggiori lacchè: non fanno informazione, ma propaganda schifosa, indignandosi (recitando male) solo quando gli fa comodo. Questo clima d’odio feroce arma la mano della peggiore feccia, a prescindere dall’orientamento politico. Abbiamo il dovere di condannare questi atti e di difendere chi ne è vittima. Sempre.
Hashtags
@UltimoraPOlitics · Post #38783 · 08.05.2022 г., 13:52
#Italia#Ucraina#Russia Alessandro #DiBattista: "L'Italia rompa momentaneamente con la NATO, non sta lavorando per la pace." @UltimoraPolitics
@savinobalzano · Post #1153 · 13.09.2025 г., 08:51
https://x.com/SavinoBalzano/status/1966783970898567602?t=zZL69h7Q7TRi-d5pojuqBw&s Desidero esprimere la mia più convinta e sentita solidarietà ad Alessandro Di Battista. Come sapete, presso il centro sociale La Strada, a #Roma, è stato collocato un ordigno artigianale insieme a uno striscione insultante contro di lui. Un gesto schifoso, un grave tentativo di intimidazione contro una persona che lotta per le proprie idee, in difesa di un popolo inerme che subisce il male assoluto. Dico due cose. La prima: chiunque si indigni per la violenza che vediamo - ora ad esempio negli Stati Uniti - ha il dovere di condannare anche questo atto vile. Se crediamo nella democrazia, nella libertà, in un mondo dove i nostri figli possano battersi per le proprie idee, dobbiamo schierarci contro questa vile minaccia e stare accanto ad Alessandro. Vale per chi, come me, condivide le sue posizioni sul Medio Oriente, ma anche per tutti gli altri. Tutti, senza eccezioni. La seconda: Alessandro #DiBattista è stato oggetto di una campagna di delegittimazione ignobile. Una parte della nostra stampa si è accanita contro di lui con inchieste ridicole, costruite per denigrare la persona e indebolirne le idee. Tentativi ovviamente vani. Sapete di chi parlo: prezzolati, voltagabbana, zerbini che non meritano nemmeno di essere nominati. Per mesi hanno provato a nascondere ciò che accade a #Gaza, insultando chi difende le vite di quei bambini. Poi si mostrano in video, falsamente sconvolti quando la violenza colpisce qualcuno a loro più gradito. Questa incoerenza è intollerabile, tipica dei peggiori lacchè: non fanno informazione, ma propaganda schifosa, indignandosi (recitando male) solo quando gli fa comodo. Questo clima d’odio feroce arma la mano della peggiore feccia, a prescindere dall’orientamento politico. Abbiamo il dovere di condannare questi atti e di difendere chi ne è vittima. Sempre.
Hashtags
@ULTIMORAPOLITICS · Post #43240 · 04.04.2023 г., 13:54
Il ritorno di Alessandro #DiBattista: è attivista e vicepresidente dell’associazione politica #Schierarsi. A maggio i primi meetup. @UltimoraPolitics
Hashtags
@savinobalzano · Post #1226 · 05.12.2025 г., 08:56
https://x.com/SavinoBalzano/status/1996865656495509639?t=02k2WOgjXcoPFfsaQfyKIw&s=19 Ieri bel confronto con Antonio Padellaro. Vi ricordo il suo libro, Antifascisti Immaginari, edito da Paper First. Chi ha montato la polemica sulla fiera del libro di Roma, con la solita menata stucchevole del fascismo, non ha fatto altro che regalare una pubblicità enorme proprio alla casa editrice che voleva escludere. Effetto imprevisto? Sono così sprovveduti? Non direi: mi pare il solito antifascismo da salotto, da titoli di giornale, da agenzie di stampa. Il solito mezzuccio per ottenere un po’ di visibilità. In effetti ha funzionato, ma con l’antifascismo vero – quello di cui parla #Padellaro nel suo libro – non ha nulla a che vedere. Dopotutto, molti degli antifascisti più scatenati contro il governo negli ultimi anni li vedremo sfilare alla festa di Fratelli d’Italia, Atreju. Abbastanza divertente. Forse tragicomico. Da ultimo, Carlo #Calenda propone lo scudo democratico e di indagare su Di Battista. Curioso, per due ragioni: alla fine, come la giri e la volti, questi difensori della democrazia e della libertà propongono sempre di tappare la bocca a qualcuno; in secondo luogo, non è stato #DiBattista ad andare a San Pietroburgo, dai russi, a rammaricarsi di non essere riuscito a portare anche il Colosseo. Indovinate come si chiamava quel ministro della Repubblica? #BattitoriLiberi: dal lunedì al venerdì alle 17, su Radio Cusano.
@savinobalzano · Post #1293 · 05.03.2026 г., 10:01
https://x.com/SavinoBalzano/status/2029497341670007129?s=20 Se l’operazione di #Israele e #StatiUniti (checché ne dica #Trump, l’ordine corretto è questo) la critica #DiBattista, Parenzo si infuria e gli dà dello zozzo. Se lo fa #Cecchettin, Parenzuccio diventa un dolce cucciolotto: non è d’accordo, ma “rispetta molto”. Ma guarda un po’. La dittatura del politicamente corretto continua a soffocarci e certi sacerdoti non possono essere minimamente criticati. Nemmeno quando muovono ridicole accuse di sessismo a Carlo #Conti. E invece no: una cazzata resta una cazzata. Anche se la dice Cecchettin. Ospite de #LaZanzara e di Cruciani.