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

Резултати

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

Пребарај: #regionali

当前筛选 #regionali清除筛选
Tutto Elezioni

@tuttoelezioni · Post #1413 · 24.11.2025 г., 15:35

#Italia🇮🇹 #Regionali #Veneto 🕒Ore 15:00. Affluenza finale: 44,64% (-16,52% rispetto al 2020) Dati per provincia/città metropolitana: - Belluno: 35,29% (-12,55%) - Padova: 49,04% (-16,39%) - Rovigo: 41,19% (-18,69%) - Treviso: 43,78% (-14,49%) - Venezia: 44,00% (-21,52%) - Verona: 44,75% (-16,90%) - Vicenza: 45,10% (-16,70%) @TuttoElezioni

Tutto Elezioni

@tuttoelezioni · Post #1402 · 23.11.2025 г., 22:29

#Italia🇮🇹 #Regionali #Veneto 🕚Ore 23:00. Affluenza parziale: 33,88% (-12,25% rispetto al 2020) Dati per provincia/città metropolitana: - Belluno: 25,96% (-8,97%) - Padova: 37,67% (-11,82%) - Rovigo: 30,60% (-14,06%) - Treviso: 33,35% (-10,78%) - Venezia: 33,25% (-13,48%) - Verona: 33,74% (-13,17%) - Vicenza: 34,69% (-12,29%) @TuttoElezioni

Tutto Elezioni

@tuttoelezioni · Post #1397 · 23.11.2025 г., 18:44

#Italia🇮🇹 #Regionali #Veneto 🕖Ore 19:00. Affluenza parziale: 29,32% (-6,24% rispetto al 2020) Dati per provincia/città metropolitana: - Belluno: 22,74% (-4,21%) - Padova: 32,26% (-6,11%) - Rovigo: 26,36% (-8,37%) - Treviso: 29,07% (-4,61%) - Venezia: 28,92 (-7,57%) - Verona: 29,02% (-6,59%) - Vicenza: 29,86% (-6,50%) @TuttoElezioni

Tutto Elezioni

@tuttoelezioni · Post #1393 · 23.11.2025 г., 12:17

#Italia🇮🇹 #Regionali #Veneto 🕛Ore 12:00. Affluenza parziale: 10,10% (-4,64% rispetto al 2020) Dati per provincia/città metropolitana: - Belluno: 8.00% (-3,44%) - Padova: 10,88% (-4,90%) - Rovigo: 9,39% (-5,37%) - Treviso: 9,83% (-4,24%) - Venezia: 10,23% (-5,04%) - Verona: 9,98% (-4,61%) - Vicenza: 10,39% (-4,53%) @TuttoElezioni

Tutto Elezioni

@tuttoelezioni · Post #1389 · 23.11.2025 г., 09:03

#Italia🇮🇹 #Regionali #Veneto ❓Come si vota in Veneto? Come in Campania e Puglia, in Veneto i cittadini votano sia per il Presidente della Giunta, sia per il Consiglio regionale. È eletto Presidente il candidato che ottiene il maggior numero di voti. Al candidato Presidente eletto viene assegnato un premio di maggioranza. I consiglieri sono 49, più il Presidente eletto e il candidato giunto secondo. I seggi sono ripartiti su base provinciale: - Belluno: 2; - Padova: 9; - Rovigo; 2; - Treviso: 9; - Venezia: 9; - Verona: 9; - Vicenza: 9. È prevista una soglia di sbarramento del 5% per le coalizioni, ovvero del 3% se un gruppo di liste all'interno di una coalizione ha ottenuto il 3%. È ammesso il cd. voto disgiunto. @TuttoElezioni

Tutto Elezioni

@tuttoelezioni · Post #1412 · 24.11.2025 г., 15:34

#Italia🇮🇹 #Regionali #Campania 🕒Ore 15:00. Affluenza finale: 44,06% (-11,46% rispetto al 2020) Dati per provincia/città metropolitana: - Avellino: 41,27% (-10,58%) - Benevento: 41,25% (-10,44%) - Caserta: 46,99% (-10,54%) - Napoli: 43,73% (-11,59%) - Salerno: 44,60% (-12,50%) @TuttoElezioni

Tutto Elezioni

@tuttoelezioni · Post #1404 · 23.11.2025 г., 22:49

#Italia🇮🇹 #Regionali #Campania 🕚Ore 23:00. Affluenza parziale: 32,07% (-6,84% rispetto al 2020) Dati per provincia/città metropolitana: - Avellino: 29,92% (-7,09%) - Benevento: 28,92% (-7,30%) - Caserta: 34,09% (-6,11%) - Napoli: 32,24% (-6,61%) - Salerno: 31,85% (-7,77%) @TuttoElezioni

Tutto Elezioni

@tuttoelezioni · Post #1398 · 23.11.2025 г., 18:46

#Italia🇮🇹 #Regionali #Campania 🕖Ore 19:00. Affluenza parziale: 25,87% (-0,63% rispetto al 2020) Dati per provincia/città metropolitana: - Avellino: 24,26% (-0,53%) - Benevento: 23,64% (-1,16%) - Caserta: 27,61% (+0,61%) - Napoli: 25,95% (-0,81%) - Salerno: 25,60% (-1,07%) @TuttoElezioni

Tutto Elezioni

@tuttoelezioni · Post #1391 · 23.11.2025 г., 12:09

#Italia🇮🇹 #Regionali #Campania 🕛Ore 12:00. Affluenza parziale: 8,25% (-3,07% rispetto al 2020) Dati per provincia/città metropolitana: - Avellino: 7,04% (-2,51%) - Benevento: 7,33% (-2,73%) - Caserta: 8,25% (-2,96%) - Napoli: 8,58% (-3,26%) - Salerno: 8,20% (-3,04%) @TuttoElezioni

123•••10•••1718
ПретходнаСтраница 1 од 18Следна