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

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

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

@savinobalzano · Post #903 · 20.02.2025 г., 08:52

https://x.com/SavinoBalzano/status/1892496345014968599?t=e-DR9Kiq2eLISEbp0BcZXg&s=19 Non c'è nulla di sconvolgente nelle parole di #Trump su #Zelensky. Lo stupore è frutto del lavaggio del cervello, della propaganda, delle follie che si sono dette e scritte in questi drammatici anni di #guerra sulle spalle di tanta povera gente. La sorpresa è in quelli che davvero pensavano fosse una guerra di #civiltà, una guerra per la #libertà, per la #democrazia: babbei. Che poi, come ho avuto modo di scrivere decine di volte nel mio piccolo, era una narrazione pericolosissima: si, insomma, se in gioco erano valori tanto alti, se l'avversario era davvero un nuovo #Hitler, forse non stavamo facendo abbastanza, forse davvero era necessario lasciare che deflagrasse un conflitto mondiale. A causa di un manipolo di fanatici, ci siamo andati molto molto vicini. Le ragioni del conflitto erano decisamente meno nobili e, semplicemente, esse non sono più coerenti con gli obiettivi statunitensi. Punto. #DonaldTrump ha detto la verità: il presidente ucraino è davvero un comico ed è vero che l'#Ucraina non è una democrazia, com'è vero che il suo leader è una figura mediocre. Cosa c'è di falso in queste parole? Qualche babbeo ritiene che #Biden la vedesse diversamente? che i democratici #Usa ritenessero davvero di volersi immolare per l'eroismo di #VolodymyrZelensky? Dipingerlo come il nuovo eroe mondiale era semplicemente funzionale al perdurare della guerra. Le redini sono sempre state negli #USA: non abbiamo mai avuto voce in capitolo in questo conflitto. Non ce l'ha mai avuta l'#UE, non ce l'ha mai avuta #VonDerLeyen, mai #Kallas (di cui #DonaldTrump certamente non conosce nemmeno l'esistenza), mai il despota francese #Macron o il triste cancellierino tedesco #Scholz. Nessuno di loro ha mai contato nulla: #JoeBiden chiamava (o, meglio, era un amministratore di sostegno a farlo) e loro eseguivano. Punto. Cosa è cambiato? non è difficile da comprendere: chi contava prima voleva la guerra alla #Russia; chi conta adesso non vuole la guerra a #Putin. Tutto il resto è propaganda, è lavaggio del cervello, fesserie: come quelle che ci raccontavano di Putin gravemente ammalato o già morto, delle opposizioni che stavano per rovesciarlo, del suo esercito che lottava con le pale (con tanto di fotografia della vanga, che vergogna!), dell'eroica e vittoriosa resistenza ucraina, della loro controffensiva. Tutte palle. C'è stato solo un intoppo: gli utili idioti di questi anni vorrebbero salvare la faccia e Trump è stato piuttosto repentino nel mettere a nudo la loro irrilevanza, palesando subito i nuovi obiettivi statunitensi. Quegli obiettivi, però, non sono in discussione e dunque chiunque si metta di traverso viene travolto. Si tenta disperatamente di far passare Trump per traditore, ma è lo sciocco racconto dei nostri giornali e di qualche direttore di telegiornale inconsolabile: ve lo siete dimenticato di quando Biden e #BorisJohnson costrinsero l'#Ucraina a continuare la guerra mentre quelli pensavano di avviare una trattativa? in quelle circostanze, che considerazione si nutriva del volere di Zelensky, della visione del popolo ucraino? nessuna. Poi c'è una terza categoria di disperati in stato catatonico, di cui probabilmente parleremo a breve, ed è rappresentata dai quelli che per anni si sono sbracciati per la #pace, per la fine del conflitto, denunciando gli orrori che si consumavano: bene, questi improvvisamente hanno dimenticato tutte le priorità che li costringevano all'insonnia e hanno scoperto in Trump il loro nemico pubblico numero 1: sono i peggiori.

Yukiokhruner

@yukiokhruner · Post #52 · 01.08.2022 г., 10:04

L'esigenza spontanea di uno spazio sacro sembra essere venuta meno nell'ultima forma della nostra civiltà #vaporonda#vaporwave#vapourwave#vaporart#seapunk#webpunk#glitch#glitchart#glitchartistscollective#chillwave#aesthetic#vaporwaveaesthetic#vaporwaveaesthetics#malinconia#melancholy#civiltà#civilization#egemonia#hegemony#sacro#sacred#suora#nun