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

Резултати

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

Пребарај: #sattanino

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

@savinobalzano · Post #967 · 05.04.2025 г., 07:29

https://x.com/SavinoBalzano/status/1908420590513336802?t=qcol10l3x0ENVpq5ZRixrg&s=19 AVANTI IL PROSSIMO! La nostra rubrica oggi ospita #MariolinaSattanino: benvenuta Mariolina e grazie per aver deciso di partecipare al nostro format. Allora, cosa ci hai portato? che ci fai ascoltare? Ah una barzelletta, che brava. Ci piacciono tanto le barzellette: prego, prego! «non mi sta bene chi considera il pacifismo una forma di "lasciateci in pace che così continuiamo a farci i fatti nostri e a non pagare le tasse"». Oggi è sabato, non mi voglio arrabbiare, però penso sia utile un bel passaggio del tanto amato #ManifestoDiVentotene che probabilmente ci aiuterà a comprendere da dove la nostra ospite #Sattanino ha tratto ispirazione: «occorre fin d’ora gettare le fondamenta di un movimento che sappia mobilitare tutte le forze per far sorgere il nuovo organismo, che sarà la creazione più grandiosa e più innovatrice sorta da secoli in Europa; per costituire un largo stato federale, il quale disponga di una forza armata europea al posto degli eserciti nazionali, spazzi decisamente le autarchie economiche, spina dorsale dei regimi totalitari, abbia gli organi e i mezzi sufficienti per fare eseguire nei singoli stati federali le sue deliberazioni, dirette a mantenere un ordine comune». Forse a questo serve davvero l’esercito comune: a farci pagare le tasse, ad esempio. Sullo sfondo della sua battuta c'è la solita (avevo promesso di non arrabbiarmi, mi fermo un attimo a respirare e mi modero) antipatia verso l'Italia e verso gli italiani. I peggiori antitaliani ce li abbiamo qui, dentro casa nostra. L'idea cioè che tutti in #Europa si fanno il mazzo, mentre noi beviamo, andiamo a donne e suoniamo il mandolino. Vorrei ricordare a Mariolina che il suo Paese è storicamente, da sempre, in avanzo primario: al netto degli interessi sul debito (che i rigorosi alla Monti e Draghi avrebbero dovuto abbattere), spendiamo meno di quanto raccogliamo. Non odi il suo Paese e i suoi concittadini: siamo molto più virtuosi di quanto si dica in giro per la sua amata #UE. A proposito di difesa, si sarà lasciata convincere da Rutte, l'attuale Segretario Generale della #Nato, che nel 2020, da premier olandese, prometteva ai suoi operai che non avrebbe dato un centesimo all'#Italia. Trascurando peraltro il fatto che il nostro Paese è uno dei contributori netti al bilancio dell'Unione Europea: diamo più di quanto riceviamo. Insomma Mariolì, rilassati e sorridici: non siamo poi così male.

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.