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

Пребарај: #sma

当前筛选 #sma清除筛选
Venture Village Wall 🦄

@venturevillagewall · Post #4088 · 07.02.2025 г., 07:00

SEC Accepts Grayscale's Solana ETF Application The SEC has accepted Grayscale's application to launch a Solana ETF, marking the first instance of an altcoin ETF being approved amid previous securities classification concerns, according to Bloomberg analyst Eric Balchunas. Additionally, Grayscale's application to convert its Litecoin trust into a spot ETF has also been accepted. CBOE submitted registration forms for Ripple ETFs from Bitwise, WisdomTree, Canary, and 21Shares. Furthermore, Trump Media's new structure, Truth Fi, applied for a Bitcoin Plus ETF and Bitcoin Plus SMA. For further details, see the full news here. #SEC#Solana#ETF#Grayscale#Litecoin#CBOE#Ripple#Bitcoin#IPO#Gemini#Crypto#Finance#News#SMA#WisdomTree#21Shares#Bitwise#TrumpMedia#CryptoMarket#Trading#VC

Шпаков Максим 7 лет (диагноз СМА 3 типа). Сбор на курс реабилитации в центре "Адели" на сумму 2️⃣4️⃣2️⃣1️⃣0️⃣0️⃣ руб. Друзья, время новостей! Сегодня расскажем вам о новостях из жизни нашего подопечного Максима Шпакова. Остаются считаные дни до начала зимы, а в Амурской области она почти наступила, и наш Максим уже успел порадоваться первому снегу – морозные прогулки и катание на санках – одно из любимых занятий Макса. Помимо прогулок, Максим продолжает регулярные реабилитации дома в ожидании предстоящей операции на тазобедренные суставы. Безусловно, такие занятия дают свои результаты – мальчик стал самостоятельнее, может вставать по опоре, а иногда удается встать даже без опоры. Для того, чтобы положительная динамика наблюдалась и в дальнейшем, Максиму до операции необходимо успеть пройти еще один курс реабилитации в профильном центре. До начала курса осталось совсем немного времени, поэтому мы просим вас поддержать Максима, осуществив посильную помощь. Это можно сделать любым удобным способом:🧚‍♀️ 🔹Отправить СМС на номер 3️⃣4️⃣3️⃣4️⃣ (для абонентов всех сетей) со словами ВАЖНЫЕ 500 - где 500 любая комфортная сумма пожертвования. 🔹Больше способов помочь на сайте: ⠀https://fond-vl.ru/campaign/shpakov-maksim-2/#pay 🔹Также можно осуществить перевод на указанные реквизиты: ⠀Сбербанк Р/с: 40701810540000000720 ИНН: 5044120150 БИК: 044525225 Назначение платежа: Шпаков Максим 🔹А еще вы можете поделиться этим постом в своих социальных сетях, чтобы как можно больше людей смогли помочь Максиму 💙 ❤️Мы от всей души благодарим всех за поддержку наших малышей. #важныелюди#реабилитация#медцентр#Адели#курсреабилитации#помогатьлегко#творидобро#sma#лечениедетей#помощьдетям#пожертвование#благотворительность#фонд#Adeli#москва#Амурскаяобласть#Амурск#Свободный#СМА#лечение#Спинраза#область#поддержка#перевод#сбор#зима

Курс реабилитации в центре "Адели" необходим для чудесного Максима! У Максима генетическое заболевание СМА. Максим продолжает регулярные реабилитации дома. Безусловно, такие занятия дают свои результаты – мальчик стал самостоятельнее, может вставать по опоре, а иногда удается встать даже без опоры. Для того, чтобы положительная динамика наблюдалась и в дальнейшем, Максиму необходим курс реабилитации в профильном центре Адели. Мы просим вас поддержать Максима, осуществив посильную помощь. Осталось собрать 42 600 ₽ и сбор будет закрыт. Это можно сделать любым удобным способом:🧚‍♀️ 🔹Отправить СМС на номер 3️⃣4️⃣3️⃣4️⃣ (для абонентов всех сетей) со словами ВАЖНЫЕ 500 - где 500 любая комфортная сумма пожертвования. 🔹Больше способов помочь на сайте: https://fond-vl.ru/campaign/shpakov-maksim-2/ 🔹Также можно осуществить перевод на указанные реквизиты: ⠀Сбербанк Р/с: 40701810540000000720 ИНН: 5044120150 БИК: 044525225 Назначение платежа: Шпаков Максим 🔹А еще вы можете поделиться этим постом в своих социальных сетях, чтобы как можно больше людей смогли помочь Максиму 💙 ❤️Мы от всей души благодарим всех за поддержку наших малышей. #важныелюди#реабилитация#медцентр#Адели#пожертвование#курсреабилитации#помогатьлегко#творидобро#sma#лечениедетей#помощьдетям#пожертвования#благотворительность#фонд#Adeli#москва#Амурскаяобласть#Амурск#Свободный#СМА#лечение#Спинраза#область#поддержка#переводденег#сборсредств#весна#благотворительныйфонд#веравчудо