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

Резултати

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

Пребарај: #mma

当前筛选 #mma清除筛选
Viral Today

@Viral_Today · Post #1197 · 08.02.2021 г., 00:00

Never give up. Cheick Kongo had the greatest comeback during his fight against Pat Barry YouTubeNews/ #MMA

Hashtags

Main Event | Sport News

@maineventnews · Post #4 · 16.07.2024 г., 06:01

A UFC Fight Completely Split the Russian Heavyweights. Volkov Continues to Troll Pavlovich Unexpectedly. It's been just under a month since the bout between two top Russian heavyweights in the UFC, Alexander Volkov and Sergei Pavlovich. By now, most people who were anxious about the fight between our compatriots have likely digested the event (as well as Volkov’s victory, which few expected). Changes in Rankings The rankings now look familiar in their relatively new configuration (Volkov is now ranked third in the heavyweight division, while Pavlovich is fifth), and each of the participants in the recent clash seems to be moving on. However, from time to time, references to the fight still surface among fans—and in the social media posts of the former opponents themselves. Altered Relationships It’s also curious (and somewhat sad) that the relationship between Volkov and Pavlovich has evidently changed. Volkov has continued to troll Pavlovich, keeping the tension between them alive. #MMA 👁Subscribe to Main Event | Sport News

Hashtags

Viral Today

@viral_today · Post #3019 · 16.09.2024 г., 10:30

UFC 306 at the Sphere was a massive success with the UFC investing over $20 million to produce the show. The event was the first of its kind, with audience members being able to feel punches through haptic feedback in the seats. — Ticket prices ranged from $1,000 to $17,000. — Total capacity: 18,000. — The Sphere uses the power of 21,000 homes, with 70% coming from solar energy. @Viral_Today / #wow#mma

Hashtags

Viral Today

@viral_today · Post #2539 · 08.06.2024 г., 10:30

Eddie Hall, a former World's Strongest Man, took on the Neffati brothers in a 2 vs. 1 MMA match. The fight, part of the World Freak Fight League, showcased Hall's immense strength as he faced two opponents simultaneously. Watch the intense highlight of this unique and thrilling match! @Viral_Today / #MMA#wow

Hashtags

Main Event | Sport News

@maineventnews · Post #72 · 19.07.2024 г., 14:03

Israel Adesanya is in great shape 🔥 Izzy continues to prepare for the title fight against Dricus Du Plessis and plans to reclaim the belt. Their fight will headline UFC 305, which will take place on August 18 in Australia. #MMA #UFC 👁Subscribe to Main Event | Sport News

Hashtags

EdgeMarket.AI 📣

@edgemarketai · Post #8011 · 05.03.2026 г., 11:12

Max Holloway vs Charles Oliveira. 5 rounds. Lightweight. Who leaves with the belt? Volume vs submissions. Pressure vs danger. My question: Can Max survive Charles early enough to drown him late? #UFC#MMA

Hashtags

Main Event | Sport News

@maineventnews · Post #52 · 17.07.2024 г., 12:00

Diaz Sues Organizers of Fight with Masvidal #box#mma Nate Diaz has filed a lawsuit against the organizers of the fight with Jorge Masvidal. Nate claims he had an agreement for a $10,000,000 payout for the fight. He received an advance payment of $1,000,000, with the remaining $9,000,000 to be paid after the fight. The lawsuit states that the company is refusing to make the payments, claiming that the event was unprofitable. 👁Subscribe to Main Event | Sport News

Hashtags

ПретходнаСтраница 1 од 4Следна