@desucake · Post #35556 · 12.05.2026 г., 15:34
Artist: #toga link
Hashtags
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
Пребарај: #toga
@desucake · Post #35556 · 12.05.2026 г., 15:34
Artist: #toga link
Hashtags
@djangoproject · Post #447 · 18.09.2017 г., 10:35
https://pybee.org/news/buzz/2017-google-summer-of-code-final-report-dayanne-fernandes/ After almost 4 months of work on Google Summer of Code 2017, finally I'm completing my proposal. Every widget migration and every commit/PR/issue/discussion with my mentors about Cricket , Toga and rubicon-objc were detailed on the Issue 58. "Eating your own dog food" The best way to show that a product is reliable to the customers is use it. So, the way to show that #Toga is an effective tool to build a #GUI is to build a complete application using it. #Cricket is a graphical tool that helps you run your #test suites. Its current version is implemented using #Tkinter as the main GUI framework. So, why not test Toga inside of another product from #BeeWare? That's what I have acomplished during my GSoC work.
@savinobalzano · Post #796 · 30.10.2024 г., 18:36
https://x.com/SavinoBalzano/status/1851693682296262978?t=DjaxaAj8D-PLyGvsxbfXRA&s=19 L'atteggiamento di una parte della #magistratura è letteralmente eversivo: interponendosi tra l'azione di #governo e la realizzazione degli obiettivi dell'esecutivo, mina drammaticamente alla separazione dei poteri e al buon funzionamento dello #Stato democratico. Il #giudice di #Bologna non si è limitato a porre un dubbio circa la prevalenza del diritto nazionale o di quello comunitario: è entrato nel merito delle scelte politiche del Governo, affermando che secondo la logica assunta da quest'ultimo sarebbero state considerate sicure la #Germania nazista e l'#Italia fascista. È letteralmente inaccettabile, anche perché è palese la provocazione laddove parte della coalizione di governo è da più parti accusata (da informazione, opposizione e pappagalli vari) di essere condizionata da rigurgiti neofascisti di varia natura. Un gesto, quello di Bologna, malinconicamente prevedibile: sarebbe stato bello essere smentiti, ma così non è stato. La magistratura, sia per il tramite dei suoi sindacati, che per voce del Csm, ha diritto di esprimersi su questioni che riguardino la #giustizia, ma è del tutto fuoriluogo che si metta a fare l'#opposizione extraparlamentare al governo. La terzietà e l'imparzialità della magistratura sono gravemente messe a rischio: con le proprie determinazioni i magistrati hanno il potere di condizionare profondamente la vita dei cittadini. Un tale potere andrebbe esercitato con cautela, moderazione, compostezza: assistiamo invece a una maldestra, sguaiata e rocambolesca scesa in campo bella e buona. Esiste dunque un'emergenza, ma è la stessa magistratura a innescarla. Il ragionamento che sottende poi l'iniziative del giudice di Bologna è letteralmente privo di logica e buon senso: sono al sicuro le comunità di immigrati nelle banlieue francesi? ancora, come la mettiamo col clamore delle iniziative #BlackLivesMatter a seguito di tutti quei casi di violenza (taluni mortali) perpetrati dalle forze dell'ordine a danno di persone di colore negli USA? dichiariamo non sicuri gli Stati Uniti e la Francia? Se qualche giudice desidera cambiare la società e impegnarsi per realizzare un progetto di comunità va benissimo: per farlo, però, serve assumere una posizione di parte, essere dunque parziali: si tratta di una condizione di totale incompatibilità col potere giudiziario, con la giurisdizione. Si svestano della #toga quelli che desiderano fare #politica: sono i benvenuti come lo sono tutti e portranno realizzare quanto desiderano... dopo aver preso i voti e ricevuto un mandato politico dal #popolo.