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

Резултати

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

Пребарај: #ageofmars

当前筛选 #ageofmars清除筛选

💵 How to make money in the P2E game Age of Mars? 💵 AGE OF MARS is a 3D game in which you conquer Mars. You will need to produce water, oxygen, and rocket fuel to trade these resources for real money How it works 👇 1️⃣ Buy Aqua NFT and (or) Planta NFT of any rarity - from common to legendary. The higher the rarity of an NFT, the greater its profitability. 2️⃣ Place your NFTs on the playing field. They will become in-game assets and will generate daily resources that can be exchanged for MRT tokens. This token is traded on the Pancake Swap exchange as MRT/USDT pair, which means you can instantly top-up your USDT wallet. 3️⃣ Increase your income - upgrade your NFTs to level 10. Yield at Level 10 can be 101% higher than at Level 1. 4️⃣ Try minting - create a new NFT from two existing ones. Minting is available for Level 10 tokens. You can play together with your team members and earn passive income - up to 15% from NFT sales and up to 80% from all resources generated in your team. 💰How to start earning 💰 ➡️Register using the link ➡️ Top up your balance ➡️ Buy NFTs on the marketplace ➡️ Place them on the in-game map ➡️ Collect resources and exchange them for USDT REGISTRATION | TELEGRAM CHANNEL #P2E#Play2Earn#AgeOfMars

​​🎙TOP TIER PROJECT ANNOUNCEMENT 🔥🔥🔥 👉Age of Mars - a P2E game. Make money on the colonization of Mars 💵👽💵 📌A whole new generation of P2E games is coming: they offer a free 2 play model, high-quality graphics, addictive gameplay, and a sustainable economic model. It is a fully-fledged 3D game in which you are required to turn Mars into a habitable planet. 📌The spaceship will take you to Mars, where your mission will be to create a habitable planet. You will get to develop your base and extract liquid resources that can be instantly converted into MRT utility tokens (MRT 👉 USDT). 👩‍🚀 Level up your NFTs and earn more. Depending on the rarity of the NFT, the yield on level 10 can be 101% higher than on level 1. In addition, level 10 unlocks Minting, the process of creating a new NFT at the expense of two NFTs you already own. 🧨 Age of Mars has a dedicated game mode for teams. You can earn up to 15% from NFT sales and up to 80% of the resources generated in your team. These are the best rewards across all blockchain games! 🤌 👉You can join the conquest of Mars by following the link.🔥🔥🔥 REGISTRATION| Telegram #P2E#Play2Earn#AgeOfMars