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

Пребарај: #osmo

当前筛选 #osmo清除筛选
Coinlegs Cryptocurrency Signals

@coinlegs · Post #9707 · 13.01.2024 г., 00:02

🐬DOLPHIN | AI PREDICTIONS 13.01.2024 00:00 GMT Expected 5% Profit/Loss in 24 Hours #OSMO | 1.7437 | PP: 82% | LP: 97% #SEI | 0.6791 | PP: 70% | LP: 99% #STX | 1.634 | PP: 68% | LP: 98% #SKL | 0.08865 | PP: 63% | LP: 91% #OM | 0.06588 | PP: 57% | LP: 98% #WNXM | 53.81 | PP: 26% | LP: 92% #CHR | 0.2573 | PP: 25% | LP: 99% #ICP | 12.232 | PP: 20% | LP: 93% #NEXO | 0.893 | PP: 18% | LP: 94% #BNB | 296.6 | PP: 5% | LP: 92% ——————————————————————— Total Predictions: 367 PP > 50%: 12 LP > 50%: 51 PP > 60%: 11 LP > 60%: 38 PP > 70%: 8 LP > 70%: 26 PP > 80%: 3 LP > 80%: 13 PP > 90%: 0 LP > 90%: 10 ——————————————————————— PP: Profit Probability | LP: Loss Probability

Coinlegs Cryptocurrency Signals

@coinlegs · Post #10087 · 17.03.2024 г., 07:11

🐬DOLPHIN | AI PREDICTIONS 17.03.2024 00:00 GMT Expected 5% Profit/Loss in 24 Hours #TROY | 0.002931 | PP: 99% | LP: 14% #XLM | 0.1292 | PP: 99% | LP: 14% #ZEC | 29.08 | PP: 99% | LP: 14% #QNT | 123.4 | PP: 99% | LP: 15% #PENDLE | 2.5185 | PP: 99% | LP: 16% #SNT | 0.04476 | PP: 99% | LP: 16% #SNX | 3.996 | PP: 99% | LP: 16% #VIB | 0.08893 | PP: 99% | LP: 16% #WING | 9.6 | PP: 99% | LP: 16% #YFI | 8877 | PP: 99% | LP: 16% #POWR | 0.3938 | PP: 99% | LP: 17% #PYR | 7.716 | PP: 99% | LP: 17% #SCRT | 0.6228 | PP: 99% | LP: 17% #SXP | 0.4379 | PP: 99% | LP: 17% #TIA | 13.75 | PP: 99% | LP: 17% #TWT | 1.3507 | PP: 99% | LP: 17% #UMA | 4.015 | PP: 99% | LP: 17% #PROS | 0.5068 | PP: 99% | LP: 18% #PUNDIX | 0.6027 | PP: 99% | LP: 18% #WAXP | 0.07902 | PP: 99% | LP: 18% #VET | 0.04046 | PP: 99% | LP: 20% #VTHO | 0.003851 | PP: 99% | LP: 20% #RDNT | 0.3406 | PP: 99% | LP: 23% #SC | 0.009372 | PP: 99% | LP: 24% #WOO | 0.4561 | PP: 99% | LP: 24% #WRX | 0.2741 | PP: 99% | LP: 26% #USTC | 0.02857411 | PP: 99% | LP: 30% #T | 0.03411 | PP: 99% | LP: 31% #UNFI | 7.656 | PP: 98% | LP: 13% #VGX | 0.1251 | PP: 98% | LP: 13% #SFP | 0.708 | PP: 98% | LP: 14% #ONG | 0.3793 | PP: 98% | LP: 16% #PORTO | 2.738 | PP: 98% | LP: 16% #RPL | 29 | PP: 98% | LP: 16% #SKL | 0.08973 | PP: 98% | LP: 17% #WAN | 0.2703 | PP: 98% | LP: 17% #PEOPLE | 0.04006 | PP: 98% | LP: 18% #XTZ | 1.291 | PP: 98% | LP: 18% #OSMO | 1.3818 | PP: 98% | LP: 19% #ONT | 0.3293 | PP: 98% | LP: 20% #PERP | 1.53711 | PP: 98% | LP: 20% #POLYX | 0.2222 | PP: 98% | LP: 20% #QKC | 0.013515 | PP: 98% | LP: 20% #RAD | 2.355 | PP: 98% | LP: 20% #REQ | 0.1284 | PP: 98% | LP: 20% #SAND | 0.6274 | PP: 98% | LP: 20% #TRU | 0.07445 | PP: 98% | LP: 20% #UTK | 0.1067 | PP: 98% | LP: 20% #VOXEL | 0.3238 | PP: 98% | LP: 20% #XRP | 0.6031 | PP: 98% | LP: 20% ... ——————————————————————— Total Predictions: 371 PP > 50%: 370 LP > 50%: 54 PP > 60%: 370 LP > 60%: 31 PP > 70%: 364 LP > 70%: 16 PP > 80%: 257 LP > 80%: 3 PP > 90%: 138 LP > 90%: 0 ——————————————————————— PP: Profit Probability | LP: Loss Probability