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

Резултати

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

Пребарај: #trending

当前筛选 #trending清除筛选
TODAY

@todayonlinesg · Post #19412 · 30.09.2024 г., 11:23

#trending: Teenager who has autism waits an hour at Jurong East MRT Station with no train service, mum goes to his aid "The problem was that he didn’t know what his next step should be. At the same time, he may have been hoping that the train would arrive later." Ms Lydiawati Ismail said of her son who has autism. 🚇https://tdy.sg/3NajJLe @todayonlinesg

Hashtags

TODAY

@todayonlinesg · Post #19346 · 16.09.2024 г., 13:57

#trending: Father-daughter dance at competition goes viral, viewers say it made them cry or think of their own dads They won a “special mention” medal and they were also the oldest and youngest participants in the open category, Mr Jay Sng said. 🤸‍♂️🧑‍🧒https://tdy.sg/3XkEgla @todayonlinesg

Hashtags

TODAY

@todayonlinesg · Post #19315 · 12.09.2024 г., 09:30

#trending: S'pore woman's biggest culture shock living in Sweden? Many couples skip marriage even after kids Ms Wynnette Yip said that she has been in a relationship with her Swedish partner for eight years and often faces questions from friends and family in Singapore on whether her other half was ever going to propose to her or was simply "wasting (her) time". 🇸🇪https://tdy.sg/3ZpFcHx @todayonlinesg

Hashtags

TODAY

@todayonlinesg · Post #19299 · 10.09.2024 г., 09:04

#trending: 'Full-on racial harmony' — video of Chinese S'porean youths loving Tamil movie goes viral Many netizens found it refreshing and heartwarming to see Chinese youths so thoroughly enjoying a film of a different language and culture, with users calling their reactions "cute" and "awesome". 🎬https://tdy.sg/3AQNKwP @todayonlinesg

Hashtags

TODAY

@todayonlinesg · Post #19292 · 09.09.2024 г., 10:54

#trending: 'Completely drained' — British expat's tale of long hours in China's tech sector goes viral Many social media users in China were amused to see a foreigner grappling with the demanding work culture in their country. 🇨🇳https://tdy.sg/4egs2Ry @todayonlinesg

Hashtags

TODAY

@todayonlinesg · Post #19272 · 06.09.2024 г., 12:24

#trending: S'pore non-profit that staged TikTok video of man harassing woman sparks debate on when to step in to help others TikTok users have lauded real-life passers-by who chose to intervene and help the woman, not realising that it was a staged incident. They said that it is important to look out for each other. ➡️https://tdy.sg/3Xcbx1X @todayonlinesg

Hashtags

TODAY

@todayonlinesg · Post #19147 · 20.08.2024 г., 10:37

#trending: SIA flight attendant praised as 'angel' for helping passenger clean jeans using own stain remover pen In a "friendly chat" with a cabin crew member she referred to as Aiden, Ms Paige Parker asked him "almost jokingly" if SIA had any stain removers, expecting the answer would be no. ✈️https://tdy.sg/3AxJC4T @todayonlinesg

Hashtags

TODAY

@todayonlinesg · Post #19134 · 19.08.2024 г., 09:31

#trending: Is Amsterdam safer? S'porean woman's reasons for moving to the Netherlands spark debate online Aside from her safety concerns, the weather was a major factor, as she found Singapore too hot and humid. "I can't be sweating perpetually," she wrote. ➡️https://tdy.sg/3Ti9EQf @todayonlinesg

Hashtags

TODAY

@todayonlinesg · Post #19101 · 15.08.2024 г., 11:27

#trending: Japanese ramen shop ranks Singaporeans’ spice tolerance as ‘mid’; netizens agree Out of 10 levels, Singapore and Malaysia are ranked in the middle while Indonesia is at the top with the highest spice tolerance. ➡️https://tdy.sg/4fNFrBQ

Hashtags

TODAY

@todayonlinesg · Post #19067 · 13.08.2024 г., 11:03

#trending: Influencer's praise of NDP crowd control leaves S'poreans grateful for reminder 'we are so blessed' Ms Francesca Tanmizi, an Indonesian who lives in Singapore, told her 316,000 TikTok followers she was wowed by the efficiency of NDP crowd control, the speedy cleanup of rainwater and the friendliness of the personnel involved. 🇸🇬https://tdy.sg/3WByhIk @todayonlinesg

Hashtags

TODAY

@todayonlinesg · Post #19057 · 12.08.2024 г., 11:40

#trending: New S'pore teen character in Marvel comic book sounds like burnt-out student, say netizens A Redditor teased that the character's powers could be “the result of years of training by her kiasu Tiger mum under the Singapore academic system” rather than an actual superpower. 👩‍🎓https://tdy.sg/4dFadep @todayonlinesg

Hashtags

TODAY

@todayonlinesg · Post #18965 · 01.08.2024 г., 11:40

#trending: Netizens praise Jetstar Asia's 20th anniversary song for celebrating uniquely Singaporean traits One viewer wrote: "Please consider (Mr Van Der Ven) for NDP theme song. He writes his own music and can supply 20 different types of aunties." ➡️https://tdy.sg/3WqSn85

Hashtags

123•••10•••20•••303132
ПретходнаСтраница 1 од 32Следна