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

Пребарај: #proof

当前筛选 #proof清除筛选
Bounty Hunters 💎

@trustedairdropsss · Post #101 · 19.09.2020 г., 09:04

🎁[New Loot] : Paytm First Application Sign-up : 50₹ (Use Code) Per Refer : 10₹ Link : https://firstgames.onelink.me/wElH/a4444f3f Code Tap To Copy : elnfet068 🤑Instant Withdraw , [#Proof] Added , Don't Miss Loot Fast ❌Over Now Giving bonus only

Hashtags

Bounty Hunters 💎

@trustedairdropsss · Post #97 · 15.09.2020 г., 14:59

Pannel station : Female Trick Earn Free Rs. 200 Paytm Cash (#Proof Added) Link : bit.ly/3h1O7Wt ➠Steps To Get Rs.200 Cashback •Enter Only Female Name • Gender Only : Female •Age : 18+ ⚠️Important : Must Verify Gmail Id (Check Your Gmail Box) Note : Cashback Within 24 Hours , Complete Very Easy Survey & Earn Money

Hashtags

SIGNAL

@finsignal · Post #3432 · 01.08.2024 г., 06:55

🙊 “On.. went.. on..” – we are learning to distinguish swear words from terms from the crypto world! Cryptocurrencies are an unusual and challenging market. Over the years, Cryptans have invented many words to describe what is happening around them. And we have compiled a dictionary of the most important of them for you: ➖#Wallets are a key vault for different cryptocurrencies. There is no crypt on the wallet itself, it is located in the blockchain and is assigned to your addresses. Wallets can be "cold" and "hot". ➖#DeFi – decentralized finance. Such crypto projects do not have a specific “manager” or “supervisor”. Interactions between users are managed by smart contracts. ➖#Smart contract - algorithms in the blockchain that control user actions and execute commands and conditions embedded in them. ➖#Proof-of-Work (POW, proof of work) is an algorithm for confirming transactions in the blockchain (achieving consensus) using the computing power of its participants (mining) ➖#Proof-of-Stake (POS, proof of stake) – all transactions in the blockchain are confirmed using cryptocurrency in the wallets of participants ➖#Staking – placement of POS-blockchain tokens in a wallet for a reward. The POS system needs coins to function. A more convenient and effective form is liquid staking. ➖#Gas – payment for transactions on the blockchain. When the activity on the network increases, so does the gas charge. ➖#Fork – updating/changing the blockchain: its technologies and rules ➖#Mixers are platforms that mix tokens of different users, hiding the history of transactions and previous owners. ➖#Bridges (cryptomostes, cross-chain bridges) is a service for transferring crypts from one blockchain to another. Without them, different blockchains and crypto projects cannot communicate with each other. ➖#NFT is a unique digital certificate confirming the ownership of a digital object: anything, but most often a song, a picture, an object from a game. ➖#Stablecoins are coins backed by reliable real assets (dollars, government bonds), and therefore stable in price: 1 to 1 with the dollar. ➖#Memcoins are often coins created “for fun". They are popular among speculators, but some coins “grow up” and try to create full-fledged projects. ➖#Profitability farming is earning money by providing your tokens for trading to other users in liquidity pools on a decentralized crypto exchange. ➖#Airdrop – free distribution of crypto project coins for user activity: try out the project, tell about it on social networks