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

Резултати

Пронајдени 7 слични објави

Пребарај: #gallant

当前筛选 #gallant清除筛选
MessageInABottle

@mib_messageinabottle · Post #6975 · 26.05.2024 г., 22:59

IDF MEMBER THREATENS MILITARY COUP IN ISRAEL "Yair #Netanyahu, Son of Israel PM, just posted, then deleted, this video by a Netanyahu loyalist in #Gaza threatening Defense Minister Yoav #Gallant with a military coup if he did not change tactics to allow an accelerated #genocide As the war drags on, Israel is being destabilized from within" Yair Netanyahu left Israel for Florida in March 2023 amid reports he was banned by his father from posting on social media for inflaming tensions in Israel, exacerbating a diplomatic rift with the United States. IDF soldier: "We want to KILL THEM ALL. No one shall remain alive! ... Either you change tactic, Mr #Gallant (defense minister), and let us kill them all, or we will leave only one prime minister! Do you want a military #coup?" IDF soldiers literally threatening Israeli Defense Minister Yoav #Gallant with a military coup if he did not change tactics to allow an accelerated genocide. #Israel is really no better than some two-bit dictatorship!

Libertà è ragione

@libertaeragione · Post #4165 · 28.04.2024 г., 07:55

#Israele#Gaza#CPI Secondo quanto riportato da “Channel 14”, il governo #Netanyahu ha avuto le notizia del fatto che nelle prossime settimane verranno emessi mandati di arresto per “crimini contro l’umanità” a carico dei vertici dell’esecutivo e dell’#IDF, incluso il Primo Ministro #Netanyahu (#Likud|ECR) e il Ministro della Difesa Yoav #Gallant (Likud). Sarebbe questa la ragione alla base della volontà di Bibi di cercare un “accordo dell’ultimo minuto” con #Hamas|Islamisti radicali, sperando nel fatto che una mancata invasione di #Rafah possa scongiurare l’adozione di misure cautelari da parte della Corte Penale Internazionale. Se un mandato d’arresto dovesse essere emesso nei suoi confronti, Netanyahu diventerebbe il primo leader di governo di uno Stato occidentale a riceverlo. Evento che gli precluderebbe l’ingresso in 128 Stati del mondo, pena l’arresto in loco. @OsservatorioEsteri

Savino Balzano

@savinobalzano · Post #1102 · 28.07.2025 г., 09:31

https://x.com/SavinoBalzano/status/1949764393660449003?t=AuMch5bvVrzjWnEbBSbhQg&s=19 Israele è l'unica democrazia del medio oriente e quanto si dice in giro è solo frutto della propaganda di #Hamas. Ah, no. Il ministro israeliano della Difesa Yoav #Gallant ha annunciato che #Gaza avrebbe ricevuto "niente elettricità, niente cibo, niente acqua, niente carburante". Il ministro degli esteri #Katz ha detto: "aiuti umanitari a Gaza? Non si accenderà nessun interruttore elettrico, non verrà aperto nessun idrante". Avi #Dichter, ministro dell'agricoltura, ha definito l'azione militare di #Israele la "#Nakba di Gaza 2023". Revital "Tally" #Gotliv, una parlamentare del #Likud, ha postato sul suo account social: "abbattete gli edifici!! Bombardate senza distinzione!! (...) Spianate Gaza senza pietà! Questa volta non c'è spazio per la pietà". Amihai #Eliyahu, il ministro per il patrimonio, ha indicato l'uso delle armi atomiche su Gaza "come una delle opzioni". * Citazioni tratte da C. Hedges, "Un genocidio annunciato", Fazi Editore, 2025. P.s. prima che qualche automa me lo domandi: si, anche le immagini del 7 ottobre sono disgustose. La colpa di quel disastro è da imputare ad Hamas. Però uno sguardo alla Direttiva Annibale lo darei, se fossi in voi.

la fionda📗

@lafionda · Post #6398 · 28.07.2025 г., 09:48

https://x.com/SavinoBalzano/status/1949764393660449003?t=AuMch5bvVrzjWnEbBSbhQg&s=19 Israele è l'unica democrazia del medio oriente e quanto si dice in giro è solo frutto della propaganda di #Hamas. Ah, no. Il ministro israeliano della Difesa Yoav #Gallant ha annunciato che #Gaza avrebbe ricevuto "niente elettricità, niente cibo, niente acqua, niente carburante". Il ministro degli esteri #Katz ha detto: "aiuti umanitari a Gaza? Non si accenderà nessun interruttore elettrico, non verrà aperto nessun idrante". Avi #Dichter, ministro dell'agricoltura, ha definito l'azione militare di #Israele la "#Nakba di Gaza 2023". Revital "Tally" #Gotliv, una parlamentare del #Likud, ha postato sul suo account social: "abbattete gli edifici!! Bombardate senza distinzione!! (...) Spianate Gaza senza pietà! Questa volta non c'è spazio per la pietà". Amihai #Eliyahu, il ministro per il patrimonio, ha indicato l'uso delle armi atomiche su Gaza "come una delle opzioni". * Citazioni tratte da C. Hedges, "Un genocidio annunciato", Fazi Editore, 2025. P.s. prima che qualche automa me lo domandi: si, anche le immagini del 7 ottobre sono disgustose. La colpa di quel disastro è da imputare ad Hamas. Però uno sguardo alla Direttiva Annibale lo darei, se fossi in voi.