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

Пребарај: #tomasomontanari

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

@savinobalzano · Post #907 · 24.02.2025 г., 16:28

https://x.com/SavinoBalzano/status/1894061421190959459?t=Ci7rwYNRnb91AyjmfQCXig&s=19 Sono pochi secondi, ascoltateli: vi prego! Vi prego, lo so che è dura, ma ascoltate queste poche parole di #TomasoMontanari. Ovviamente #Trump & co. sono fascisti e solite menate deliranti, ma attenzione perché stavolta ha deciso, bontà sua, di fornire una definizione di tal #fascismo. Tra le caratteristiche ci sono le libertà di qualcuno a discapito di altri (e ci potrebbe stare), ma poi gli scappa proprio "la libertà di non vaccinarsi". Ascoltatelo, vi prego, ascoltatelo! "La libertà di non vaccinarsi" paragonata a quella di "portare le armi" o al suprematismo bianco. Io penso che @tomasomontanari dovrebbe vergognarsi e trovo le sue parole davvero schifose, disgustose: il mio è un giudizio politico, ovviamente, ma da italiano mi imbarazza il fatto che certe follie possano essere partorite dalla testa di chi ricopre ruoli di tale importanza nel mondo accademico. Questa gente afferma le peggiori nefandezze, alimenta l'odio più profondo, infiocchettando la violenza con l'eleganza salottiera di certi circoli: non risponde mai di quanto dice. E se accade che, talvolta, li si chiami ad assumersi la responsabilità per lo schifo (politico) che generano, allora urlano al regime, alla dittatura, al golpe autoritario. Sostenere che la libertà di non vaccinarsi (peraltro varrebbe la pena di rileggere il testo della seconda parte dell'articolo 32 Cost.) sia fascista, dimostra quanto infimo sia il vostro #antifascismo, quanto sia grottesco, falso e modaiolo: l'antifascismo è una roba seria e non può essere rappresentato da certi individui. Antifascismo è accoglienza, comprensione, accettazione dell'altro, rispetto delle idee e dei timori altrui. Ecco perché, da persona che ogni cazzo di anno fa il vaccino antinfluenzale, provo una nausea incontenibile per quelle parole: pretendo il rispetto dell'altro, di quello che decide di fare diversamente da me, di quello che pensa che la mia scelta sia da coglioni. Di questo rispetto voi siete incapaci perché la #democrazia la odiate e la odiate perché democrazia significa rapporto con la gente, sostegno della gente, e voi siete pateticamente soli (politicamente, s'intende). I fascisti veri siete voi.

Savino Balzano

@savinobalzano · Post #1230 · 09.12.2025 г., 14:11

https://x.com/SavinoBalzano/status/1998394505398046769?t=_7-A2hwb0byAhp_Lw7UFDQ&s=19 Oggi vi parlo della Legge Ferrea Legge dei Sinistri: «dicesi sinistro colui il quale, indicata la via da intraprendere, induce le masse a imboccare quella opposta». Che in effetti, a pensarci bene, è esattamente il contrario di quello che un tempo faceva la #sinistra: quando parlava Berlinguer, parlava Berlinguer. Quando parlano i sinistri, la gente digrigna i denti e si tappa le orecchie, disturbata. Gli intellettuali dovrebbero anticipare i tempi, spiazzare, sorprendere: mai essere banali. Prendete #TomasoMontanari: quello che dice è prevedibile cento puntate prima che apra bocca. Gli intellettuali dovrebbero essere sintonizzati con la gente, capirla, raccontarle la realtà. Cosa fa invece #Montanari? Ogni giorno, in una trasmissione diversa, in prima serata, ti ripete che al governo ci sono i fascisti e che non siamo più in democrazia. Indovinate qual è la casa editrice che ha visto esplodere le vendite ultimamente? Non si sfugge, ragazzi miei: è la legge ferrea dei sinistri. Il regalo più grande che si potesse fare a Giorgia #Meloni. #BattitoriLiberi: dal lunedì al venerdì alle 17, su Radio Cusano.