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

Резултати

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

Пребарај: #tol

当前筛选 #tol清除筛选

🤑6th Season of The Open League is coming! The next season of the Open League is already approaching, the essence of which is to stimulate ecosystem and community projects. This in turn leads to an increase in the rate of tokens, which have now been significantly lowered against the background of recent events. The 6th season of the Open League starts on September 12. Аre you ready for the new season? #TheOpenLeague#TOL#TON#Telegram

MyTonWallet x $HMSTR x $CATI 😺The Catizen listing has ended on CEX and DEX exchanges, but the project continues to develop even after the #airdrop phase. The project takes 1st place in the 6th season of The #TOL (The Open League) normie league, which means that even after giving away 🪙 $CATI, we need to continue making on-chain transactions in order to increase our chances of a final airdrop from TOL. 👌 Now #TheOpenLeague has gone on a two-week break, but after that we will continue to do daily check-ins, using MyTonWallet, in the Explore section. On September 26, we will have another listing – #HamsterKombat🪙 ($HMSTR). We can also use the MTW wallet to receive coins: 🟨Select the "on-chain airdrop" option in the hamster app and use MyTonWallet. No KYC checks, only reliable decentralization. We kindly remind you that you can connect the wallet only until September 21, 08:00 UTC. 🗓 Tokens will be available on September 26, starting at 10:00 UTC, and for further convenience, you can use the built-in exchange inside #MyTonWallet. The tournament from MyTonWallet and TON Poker has also recently ended with a prize pool of $1,000 and 5,000 💎 $MY. The results can be found here. Channel | Chat | Download

СОЛОДИН LIVE

@goodtraders · Post #8703 · 28.11.2024 г., 15:50

🇺🇸#макро#США 👆Нераспроданные запасы новых односемейных домов на всех стадиях строительства — от ещё не начатых до завершённых — выросли на 9,3% в годовом исчислении до 492000 домов без учёта сезонных колебаний, что является самым высоким показателем с декабря 2007 года. 🔴 Нераспроданные запасы построенных новых домов выросли на 53% по сравнению с прошлым годом и составили 116000 домов, что является самым высоким показателем с июля 2009 года - в разгар жилищного кризиса, когда застройщики пытались выжить... 🔴 Продажи готовых домов упали на 25% по сравнению с предыдущим месяцем в октябре до 21000 домов. Жду проблемы у застройщиков сейчас: #LEN#DHI#TOL#MTH#PHM#CCS

🏆Get 6 cool SBTs from TOL participants! TBook is an modular incentive layer backed by TON Foundation. Now you have a chance to get 6 cool Soul-Bound Tokens from 6 top-tier projects participants of the 💎 TON Open League! Engage with the projects in staking, borrowing, lending, and trading to earn SBTs and claim the 🙏TON Society airdrop. Don't forget to check your rating! 🚀 🤩Go get your SBTs now! #SBT#NFT#TheOpenLeague#EVAA#DeDust#Tonstakers#bemo#STONfi#TOL#StormTrade