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

Резултати

Пронајдени 5 слични објави

Пребарај: #cacciari

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

@savinobalzano · Post #1068 · 26.06.2025 г., 09:17

https://x.com/SavinoBalzano/status/1938164361245180108?t=VsWTJR1ZgLKYmd8DXfIahA&s=19 Secondo Calenda, a persone come Cacciari e Travaglio non dovrebbe essere “consentito” di esprimere certe idee, che lui considera propagandistiche. Lo si deduce chiaramente da quanto scrive: «la questione riguarda il perché a lui e Travaglio viene consentito di fare propaganda e diffondere false informazioni senza contraddittorio ogni sera su la 7. Non comprendo proprio». Sorvolo sul tema del contraddittorio: semplicemente ridicolo. Quel che colpisce è l’uso del verbo “consentire”. #Calenda ripete ossessivamente di voler difendere la democrazia dalle autocrazie, è fissato con #Putin, ma dimentica che, nelle democrazie, non c’è bisogno che qualcuno ti “consenta” di parlare: si può parlare, punto. A me, per esempio, appaiono propagandistiche le posizioni di Calenda, non quelle di #Cacciari, #Travaglio o altri. Eppure non mi sognerei mai di chiedere che non gli venga consentito di esprimersi: anche perché, più parla, meno la gente lo vota. Io, sinceramente, lo vorrei in mondovisione 24 ore su 24, a reti unificate. Vi sembra democratico uno che, in occasione del suo congresso, si pone come obiettivo quello di “cancellare” un’altra forza politica? Peraltro una forza che raccoglie molti più consensi della sua. Diciamocelo. Ora, qualcuno starà pensando (lo farei anch’io): “vabbè, dai, è Calenda!”. Sì, avete ragione. Però c’è un aspetto che va sottolineato: il suo metodo non è isolato. Chi oggi si professa difensore della liberaldemocrazia adotta spesso questo linguaggio, questo approccio. E sono proprio questi atteggiamenti a mettere realmente in discussione la democrazia e la libertà: se ti opponi a un certo tipo di logica, a determinati propositi, anche i più assurdi, vieni immediatamente additato, e qualcuno arriva persino a domandarsi perché ti sia “consentito” di parlare. Il putiniano è lui. #BattitoriLiberi, dal lunedì al venerdì, dalle 17 su #RadioCusanoCampus.

Savino Balzano

@savinobalzano · Post #1067 · 25.06.2025 г., 10:52

https://x.com/SavinoBalzano/status/1937825791087185982?t=2bajeoer0lQb2S5BtOXnkg&s=19 Desidero esprimere la mia più totale e profonda solidarietà a #MassimoCacciari. Per carità, ogni tanto si scalda, si innervosisce, ma di fronte a certe affermazioni chiunque salterebbe letteralmente dalla sedia. Ieri sera siamo stati costretti ad ascoltare l’ultima trovata. Tal #Sattanino ci spiega che, se l’#Europa vuole difendere il welfare, deve stare attenta a #Putin. Avete capito bene: per tutelare la scuola, la sanità, la ricerca, l’università, il trasporto pubblico, le pensioni — insomma, lo Stato sociale — servono i carrarmati. Dopo l’argomento mistico-religioso — ve lo ricordate? Quello per cui il riarmo era necessario perché ce lo chiedeva Gesù — oggi ce ne propongono uno nuovo, questa volta con un volto laico: vuoi che i tuoi figli possano contare sul #welfare? Bene: taglialo per finanziare la difesa… da un nemico immaginario. È come se dicessi a mio figlio che non posso garantirgli i libri per la scuola perché ho speso quei soldi per comprargli una mazza, così potrà difendersi dal lupo cattivo. Il ragionamento è esattamente lo stesso. Ma non era il lupo a disturbare Pinocchio mentre andava a scuola. Quelli erano due lestofanti, il gatto e la volpe. Mi pare. E allora, caro #Cacciari, intanto spero che le paghino profumatamente queste partecipazioni televisive, perché sono certo che le costino moltissimo. E poi, le rinnovo tutta la mia vicinanza umana, la mia empatia e – se mi permette – anche la mia similpatia. Perché c'era solo da bestemmiare in diretta.

la fionda📗

@lafionda · Post #6287 · 25.06.2025 г., 11:09

https://x.com/SavinoBalzano/status/1937825791087185982?t=2bajeoer0lQb2S5BtOXnkg&s=19 Desidero esprimere la mia più totale e profonda solidarietà a #MassimoCacciari. Per carità, ogni tanto si scalda, si innervosisce, ma di fronte a certe affermazioni chiunque salterebbe letteralmente dalla sedia. Ieri sera siamo stati costretti ad ascoltare l’ultima trovata. Tal #Sattanino ci spiega che, se l’#Europa vuole difendere il welfare, deve stare attenta a #Putin. Avete capito bene: per tutelare la scuola, la sanità, la ricerca, l’università, il trasporto pubblico, le pensioni — insomma, lo Stato sociale — servono i carrarmati. Dopo l’argomento mistico-religioso — ve lo ricordate? Quello per cui il riarmo era necessario perché ce lo chiedeva Gesù — oggi ce ne propongono uno nuovo, questa volta con un volto laico: vuoi che i tuoi figli possano contare sul #welfare? Bene: taglialo per finanziare la difesa… da un nemico immaginario. È come se dicessi a mio figlio che non posso garantirgli i libri per la scuola perché ho speso quei soldi per comprargli una mazza, così potrà difendersi dal lupo cattivo. Il ragionamento è esattamente lo stesso. Ma non era il lupo a disturbare Pinocchio mentre andava a scuola. Quelli erano due lestofanti, il gatto e la volpe. Mi pare. E allora, caro #Cacciari, intanto spero che le paghino profumatamente queste partecipazioni televisive, perché sono certo che le costino moltissimo. E poi, le rinnovo tutta la mia vicinanza umana, la mia empatia e – se mi permette – anche la mia similpatia. Perché c'era solo da bestemmiare in diretta.

Savino Balzano

@savinobalzano · Post #1286 · 25.02.2026 г., 09:36

https://x.com/SavinoBalzano/status/2026591481822114147?s=20 Un grandissimo Massimo Cacciari ieri a #BattitoriLiberi. Sono trascorsi quattro anni dall’inizio di questa nuova fase della guerra tra #Russia e #Ucraina. Non quattro anni dall’inizio del conflitto tout court: quello è cominciato nel 2014, ovviamente. E da quattro anni ascoltiamo sciocchezze ripetute da patetici propagandisti, utili idioti – per dirla con #Cacciari – del grande partito transnazionale della #guerra. Ad oggi, sia chiaro, abbiamo fatto tutto ciò che volevano i sostenitori dello “stato profondo”, quello che tiene assieme certe élite statunitensi (democratiche e neocon) con quelle europee più decadenti: Emmanuel #Macron, Friedrich #Merz, Keir #Starmer, Ursula #VonDerLeyen, Kaja #Kallas, Mark #Rutte e predecessori. Abbiamo fatto tutto ciò che chiedevano i tatuati turisti per caso, che farneticano di tradimenti un giorno sì e l’altro pure. E il risultato è sotto i nostri occhi: un disastro. Che fine ha fatto la “guerra ibrida” della Russia contro l’#Europa? Gli attacchi continui dei droni? Gli sconfinamenti degli aerei? Gli articoli 4 e 5 del Trattato atlantico invocati a pranzo e a cena? Nel frattempo hanno perso la vita centinaia di migliaia di persone, un Paese è stato sventrato. Dovremo contribuire a ricostruirlo con i nostri soldi. E nonostante tutto, certi pifferai magici – con i sorci al seguito – continuano a riproporre imbarazzanti e stonate melodie in diretta da #Kiev. Contenti voi...

la fionda📗

@lafionda · Post #7180 · 25.02.2026 г., 09:42

https://x.com/SavinoBalzano/status/2026591481822114147?s=20 Un grandissimo Massimo Cacciari ieri a #BattitoriLiberi. Sono trascorsi quattro anni dall’inizio di questa nuova fase della guerra tra #Russia e #Ucraina. Non quattro anni dall’inizio del conflitto tout court: quello è cominciato nel 2014, ovviamente. E da quattro anni ascoltiamo sciocchezze ripetute da patetici propagandisti, utili idioti – per dirla con #Cacciari – del grande partito transnazionale della #guerra. Ad oggi, sia chiaro, abbiamo fatto tutto ciò che volevano i sostenitori dello “stato profondo”, quello che tiene assieme certe élite statunitensi (democratiche e neocon) con quelle europee più decadenti: Emmanuel #Macron, Friedrich #Merz, Keir #Starmer, Ursula #VonDerLeyen, Kaja #Kallas, Mark #Rutte e predecessori. Abbiamo fatto tutto ciò che chiedevano i tatuati turisti per caso, che farneticano di tradimenti un giorno sì e l’altro pure. E il risultato è sotto i nostri occhi: un disastro. Che fine ha fatto la “guerra ibrida” della Russia contro l’#Europa? Gli attacchi continui dei droni? Gli sconfinamenti degli aerei? Gli articoli 4 e 5 del Trattato atlantico invocati a pranzo e a cena? Nel frattempo hanno perso la vita centinaia di migliaia di persone, un Paese è stato sventrato. Dovremo contribuire a ricostruirlo con i nostri soldi. E nonostante tutto, certi pifferai magici – con i sorci al seguito – continuano a riproporre imbarazzanti e stonate melodie in diretta da #Kiev. Contenti voi...