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

Пребарај: #verità

当前筛选 #verità清除筛选
Savino Balzano

@savinobalzano · Post #925 · 08.03.2025 г., 10:13

https://x.com/SavinoBalzano/status/1898315064135782601?t=orwZbjR4Xf54dtIDhi21PA&s=19 Testimonianze come questa sono tanto drammatiche quanto preziose. Perché la #verità, per quanto dolorosa, resta un bene essenziale per il buon funzionamento della #democrazia. E la verità è semplice: il cappio eurounitario è stato stretto attorno al collo degli italiani con argomenti risibili come questo. L’Erasmus, la possibilità di spostarsi da un Paese all’altro senza esibire un passaporto: tutta aria fritta, tutta roba che “non riempie la pancia”, come si direbbe dalle mie parti. La #sinistra ha responsabilità enormi, imperdonabili: in parte per profonda ignoranza e inconsapevolezza, in parte per vile complicità, ha svenduto le istanze delle masse, dei molti, in favore degli interessi di quel capitale e di quella finanza dai quali aveva promesso di proteggerli. Un tempo si professava paladina degli interessi delle periferie, dei fragili; oggi la sinistra ha sposato la causa del sovranazionalismo depoliticizzato. Questa è l’Unione Europea: un sistema deresponsabilizzato politicamente, privo di legittimazione democratica, che impone (sin dalla sua fondazione!) una politica economica votata alla compressione della domanda interna e della spesa pubblica, a vantaggio di un modello mercantilistico basato quindi sulle esportazioni e sulla competizione tra Stati. Ci hanno raccontato che avremmo lavorato meno, che avere le stesse monetine in tasca avrebbe reso i greci ricchi quanto i tedeschi. Ma intanto tradivano il mondo del lavoro, gli operai, la gente comune. Ribadisco: non tutti erano in malafede. Molti erano semplicemente degli idioti, proprio come tanti che ancora oggi partecipano al dibattito con argomenti vecchi, smentiti diecimila volte, continuando a ricoprirsi di ridicolo. Altri, invece, erano traditori, veri e propri traditori, al soldo dello straniero nella #guerra economica e commerciale: altro che settant’anni di #pace! Scendere in piazza per l’#UE, con l’ipocrisia di farlo “non per questa Unione”, è semplicemente vile: significa insistere nel tradimento della Nazione, della Patria. Parole meravigliose, di cui qualcuno vorrebbe farci vergognare. Esiste una sola bandiera, ed è il #tricolore. Che sventoli in pace con tutte le altre, nel pieno rispetto di ogni Stato e della sua dignità, in un clima di vera armonia e cooperazione internazionale.

Savino Balzano

@savinobalzano · Post #350 · 23.03.2023 г., 11:40

Condivido le parole di Francesco Borgonovo: ieri nel suo 1984, Byoblu, ha parlato di «pandemia economica». Personalmente, credo che molti dei morti che siamo stati costretti a contare (e l'ho scritto sin dal primo momento) siano da imputare alle politiche neoliberiste che Unione Europea e i suoi alfieri italiani hanno imposto al nostro paese negli anni precedenti. Peraltro sorprende come oggi alcune forze politiche si battano per i diritti civili: le stesse che in quel periodo negavano fondamentali diritti costituzionali a chi, da quanto emerge in questi giorni direi legittimamente, nutriva qualche sacrosanto timore. #politica#italia#televisione#informazione#verità#COVID19#sanità#sanitàpubblica

Martina Pastorelli

@mpastorelli · Post #2792 · 28.01.2025 г., 08:19

WEF: a Davos da Trump a Milei si sono alzate le voci della libertà e verità, le élites globaliste sono avvertite: https://www.quotidianoweb.it/attualita/a-davos-qualcosa-e-cambiato/#quotidianoweb#news#notizie#attualità#informazione#informazionelibera#davos#trump#milei#liberta#verità#elitesglobaliste#attualita#mondo#martinapastorelli#worldeconomicforum Segui QuotidianoWeb su Telegram cliccando QUI: https://t.me/quotidianowebitalia