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

Пребарај: #ricerca

当前筛选 #ricerca清除筛选
Marx21.it

@marx21news · Post #9720 · 10.02.2026 г., 07:40

Presentazione del nuovo libro! È con grande orgoglio che condividiamo la pubblicazione della versione italiana del “Rapporto sullo sviluppo dei movimenti comunisti internazionali” (2022-2023), curato dall’Accademia di Marxismo dell’Accademia Cinese delle Scienze Sociali. Un ringraziamento speciale all’Associazione italiana Marx 21, ai compagni Andrea Catone e Francesco Maringiò, e a tutti coloro che con impegno hanno reso possibile questa traduzione, contribuendo a diffondere i risultati della ricerca marxista cinese in Italia e nel mondo. Il volume offre un’analisi aggiornata sulle tendenze del movimento comunista internazionale e sullo sviluppo socialista globale, con focus su Cina, Vietnam, Cuba, Corea del Nord e Laos, oltre a esaminare le dinamiche dei movimenti operai nei paesi capitalisti e gli eventi principali dell’anno. In un’epoca di grandi trasformazioni, questo lavoro rappresenta un ponte di dialogo tra studiosi marxisti cinesi ed europei e un contributo alla comune lotta per un futuro più giusto. Unitevi a noi nel sostenere il dibattito e la ricerca per un mondo socialista! #Marxismo#Comunismo#Socialismo#Ricerca#Internazionalismo#Libro#MovimentoComunista https://www.marx21.it/associazione/presentazione-del-nuovo-libro-relazione-sullo-sviluppo-dei-movimenti-comunisti-internazionali-2022-2023-versione-italiana/

Savino Balzano

@savinobalzano · Post #908 · 25.02.2025 г., 10:01

https://x.com/SavinoBalzano/status/1894326101435891724?t=DHW9UCHp6fo5xgthK89hDA&s=19 #Gentiloni: «Noi ci lagnamo un po' troppo di questa #UE, che alla fine è quello che c'è: uno straordinario baluardo di difesa dei servizi universali del welfare». Il primo premio, senza nemmeno aspettare la fine della giornata, della più grande cavolata del 25/02/2025 se lo aggiudica senza alcun dubbio @PaoloGentiloni. Ci congratuliamo con #PaoloGentiloni per aver vinto letteralmente a mani basse, non solo: si candida a pieno titolo per il conseguimento della targhetta in ottone per la più grossa fesseria sparata nell'intero 2025 (e, chissà, forse l'arco temporale potrebbe anche allargarsi: ma su questo ci vuole cautela, la concorrenza è forte). Mi sentirei di dire che, se sparare corbellerie fosse una partita di #tennis, oggi Paolo avrebbe stracciato anche #Sinner. Non te la prendere Paolì, il giudizio è politico e non c'è nulla di personale, però c'è un limite a tutto: ricordo, ero bambino, negli anni '90, si diceva che la nostra fosse la sanità migliore del mondo, ci si poteva permettere la seconda auto, tanti potevano andare in villeggiatura, si andava in pensione molto prima e cose di questo genere. Cose normali, se ci pensi, cose alle quali tu e i tuoi amici e familiari immagino siate abituati. Oggi è un disastro a causa dei tagli imposti dall'Unione Europea, operati principalmente dai governi guidati dal tuo partito (compreso quello nel quale tu eri Presidente del Consiglio). Il nuovo Patto di Stabilità - rispetto al quale come ex Commissario europeo per gli affari economici, hai enormi responsabilità - peggiorerà la situazione. Il discorso inflazionato sulla #sanità può essere esteso alla #scuola, all'#università, alla #ricerca, agli asili, al supporto alle famiglie e ai fragili, ai #trasporti, alle #pensioni: lo Stato sociale in questo Paese avvizzisce per colpa della politica di gente come te e di uomini come #MarioDraghi (o #MarioMonti), che eleggete a eroi della #Patria. Te la ricordi quella letterina che proprio #Draghi firmò nel 2011? si chiedeva ad esempio il contenimento di #salari e pensioni, facilitazione dei #licenziamenti: quel programma lo avete realizzato voi, prima sostenendo #Monti (quando "stavamo fallendo" con un debito pubblico enormemente inferiore a quello attuale) e poi andandovi a sedere a Palazzo Chigi in prima persona. I lavoratori li dovevate rappresentare e tutelare voi, ma l'art. 18 chi lo ha buttato nella pattumiera? i fascisti? #Trump? chi è stato? Le uniche eccezioni che siete disposti a contemplare rispetto ai limiti di spesa imposti dall'Unione Europea riguardano le #armi: siete questa gente qui. E allora Paolì è ora di farla finita co 'ste chiacchiere, tocca che cominciate una volta per tutte a fare le persone serie. Avete costretto l'#Italia all'umiliazione, lasciato passare lo stereotipo del paese spaghetti e mandolino che vive oltre le sue possibilità, nonostante siamo costantemente in avanzo primario e contributori netti di quel postribolo che tanto difendete. Insomma: l'Italia è stata costretta dall'Unione Europea alla svalutazione interna a causa di politici come te che ne hanno svilito la #Costituzione. Pertanto, ti chiedo solo una cortesia: non ci venire pure a prendere per i fondelli, che qui ci girano già abbastanza vorticosamente.