Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
#adjectives
@fluencyinenglish
@ieltsstrategies
❌سعی کنید به جای کلمهی 👈very 👉از قیدهای دیگر استفاده کنید.❌
❇️These mountains are incredibly beautiful.
❇️The food in this restaurant is usually quite good.
❇️To climb mountains, you must be exceptionally brave
and fit.
@fluencyinenglish
@ieltsstrategies
❇️Earthquakes are extremely difficult to predict.
❇️It was really cold last night.
❇️He works unbelievably hard.
@fluencyinenglish
@ieltsstrategies
❇️I feel terribly tired.
❇️The film was absolutely awful.
❇️she plays the violin remarkably well.
@fluencyinenglish
@ieltsstrategies
В Россию завезли санкционную Кока-колу:)
They've brought sanctioned Coca-Cola into Russia:)
• Санкционный (masc.adj.)
[san-ktsy-on-nyj]
Sanction-related, sanctioned, subject to sanctions
🔻This adjective describes something that is directly connected to, affected by, or created as a result of sanctions (ограничительные меры).
Common collocations:
• Санкционные списки (plural noun)
sanctions lists (lists of individuals/entities under restrictions)
• Cанкционные товары (plural noun)
Sanctioned goods (products subject to trade restrictions)
• Cанкционные меры (plural noun)
Sanction measures
• Cанкционное давление (neut.noun)
Sanctions pressure
• Попасть под санкционные ограничения (perf.)
To fall under sanctions restrictions
#useful_vocabulary
#adjectives
🟠RCR | Support | Boost
👋Доброе утро, товарищи!
• Полезный (masc.adj.)
[pa-lez-nyj]
1) Useful, advisable
2) Healthy
🔻Also:
• Полезно (adverb)
[pa-lez-na]
• Это полезно для здоровья!
[e-ta pa-lez-na dlya zda-ro-v'ya]
It's useful for health!
💢There is a funny saying:
• Всё полезно, что в рот полезло.
[fsyo pa-lez-na shto v rot pa-lez-la]
Everything that goes into the mouth is useful. (Полезло = влезать = go in/get in)
❓A у Вас полезный завтрак?
🎧🗣👇
#useful_vocabulary
#adjectives
😎 Stay with @learnRCRussian
Всем надо работать, кроме очень красивых. Есть такое правило: очень красивые могут не работать, но только очень красивые.
Everyone needs to work, except for the very beautiful. There's a rule: very beautiful don't have to work, but only if they're very beautiful.
🔻Did you know that there is a colloquial form of красивый(beautiful)?
🔻This is a playful, informal term of endearment used to describe something exceptionally beautiful, sweet, and visually appealing:
👍Красивошный (masc.adj.)
[kra-si-vash-nyj]
=
👍Красивошная (femin.adj.)
[kra-si-vash-na-ya]
=
👍Красивошное (neut.adj.)
[kra-si-vash-na-ye]
=
👍Красивошные (plural adj.)
[kra-si-vash-ny-ye]
Beautiful, handsome
😺 Show this to your very fluffy beautiful one!
#spoken_Russian
#adjectives
🟠RCR | Support | Boost
Кошачий 🆚️ Кошкин?
🔢 Кошачий
[kа-sha-chiy]
Feline, cat's, cat-like
🔻This relational adjective describes something that is characteristic of cats in general, related to the cat species, or used for cats. It describes qualities or items associated with catness.
🔻It doesn't imply ownership by a specific cat.
Examples:
• Кошачий корм (masc.)
[ka-sha-chiy korm]
Cat food
• Кошачьи повадки (plural)
[ka-sha-chyi pa-vat-ki]
Cat-like habits
🔢 Кошкин
[kosh-kin]
The cat's
🔻This possessive adjective describes something that belongs to a specific, particular cat. It implies direct ownership by an individual cat.
Examples:
• Кошкин хвост
[kosh-kin khvost]
The cat's tail
• Кошкина миска
[koshkina miska]
The cat's bowl
🤔Sooo, I have a tricky question for you, my dear Russian language learners:
❓️кошкина шерсть или кошачья шерсть (... fur)? Share your ideas!
🗝Кошачья шерсть
#tricky_words
#adjectives
😎RCR | Support | Boost
👋Всех с понедельником, товарищи!
Деловитый 🆚️ Деловой 🆚️ Дельный
🔢 Деловитый (masc.adj.)
[di-la-vi-tyj]
Businesslike, efficient, practical
🔻This adjective describes someone who is businesslike, efficient, and practical in their actions.
• Он был очень деловитый и быстро решил проблему.
He was very businesslike and quickly solved the problem.
🔢 Деловой (masc.adj.)
[di-la-voy]
Business, professional, official
🔻This adjective refers to something related to business or professional matters.
• У него деловой костюм ипричёска.
He's wearing a business suit and hairstyle.
🔢 Дельный (masc.adj.)
[del'-nyj]
Sensible, practical, useful
🔻This adjective describes something practical, and useful in terms of actions, decisions.
• Он дал дельный совет.
He gave useful advice.
❓Is▶️малыш in the video ... ?
А. деловитый
Б. деловой
В. дельный
🎧🗣👇 Make up your own examples!
#tricky_words
#adjectives
😎 Stay with @learnRCRussian
• Бесполезный (masc.adj.)
[bes-pa-lez-nyj]
Useless, pointless
🔻Prefix: бес- (bes-) means without or lack of.
🔻Root: полез- сomes from the noun польза [pol'-za] use, benefit, advantage
🔻Suffix: -н is an adjectival suffix, forming adjectives from nouns or verbs.
🔻Ending: -ый is the masculine singular ending. The ending changes depending on gender and number (e.g., бесполезная - feminine singular, бесполезные - plural).
💢 This meaning is well illustrated with the Russian proverb:
• Носить воду в решете(imperf., 2nd conjugation)
[na-sit' vo-du v ri-shi-te]
Literally: To carry water in a sieve
To roast snow in a furnace, to be engaged in a hopeless task
• Ловить котят - бесполезная задача. Это как носить воду в решете: они всё равно разбегаются!
Trying to catch kittens is a useless task. It's like trying to carry water in a sieve. They just run away anyway!
🎧🗣👇 Hope it was not a бесполезный post ->❤️
#adjectives
#phraseology
😎RCRussian | Support | Boost
Electric sleds have replaced electric scooters.
🔻In Novosibirsk, Biysk and other cities, a winter version of electric scooters (which have become a real danger for pedestrians👿!!!) has been launched — you can now zip around the snowy city on electric sleds.
• Электрический (masc.adj.)
[е-lik-tri-chis-ky]
Electric
• Самокат (самокаты) (masc.noun)
[sam-a-kat (sam-a-ka-ty)]
A kick scooter
• Санки (plural)
[san-ki]
A sled (a vehicle on runners for sliding over snow)
• Это нам за то, что не молимся.
This is what we get for not praying.
#news
#useful_vocabulary
#adjectives
😎RCR | Support | Boost
Так выглядит одна молекула кота.
This is what one cat molecule looks like.
• Маленький (masc.adj.)
[ma-lin'-kiy]
Small, little
• Крошечный (masc.adj.)
[kro-shech-nyj]
Tiny
💢Also colloquial:
• Мелкий (masc.adj.)
[mel-kiy]
SLT: Shallow
Petty, insignificant, tiny
• Мелочь пузатая (femin. noun + adj., common gender)
[me-lach pu-za-ta-ya]
SLT: A little thing with a big belly: а playful nickname for a child or cub
Now you know how to call your kittens or younger kids in Russian😉.
🎧🗣👇
#adjectives
#useful_vocabulary
#spoken_Russian
😎RCR | Support | Boost
👋Приветствую!
Не забывайте про витамины весной!
Травоядный 🆚️ Плотоядный
🔢 Травоядный
[tra-va-yad-nyj]
Herbivorous
🔢 Плотоядный
[pla-ta-yad-nyj]
Carnivorous
Etymology:
The suffix -ядный derives from the verb есть [yest'] (to eat). Therefore, these words literally mean grass-eating and flesh-eating:
Трав(а) (grass)+ linking 'о' + ядный (eating)
Плот(ь) (flesh) + linking 'о' + ядный (eating)
💢In colloquial Russian травоядный has one more, figurative or ironical meaning harmless, incapable of aggression:
• Да, не бойся Василия. Это он снаружи такой грозный, а вдуше он травоядный.
Yes, don't be afraid of Vasily. He may look intimidating on the outside, but inside he's a gentle soul.
📎 Please don't call your tough-looking husband/bf травоядный to avoid misunderstanding or arguments😅!
🎧🗣👇
#useful_vocabulary
#adjectives
#spoken_Russian
😎 Stay with @learnRCRussian
Средневековая живопись такая утончённая.
Тем временем коты...
Medieval painting is so refined.
Meanwhile, cats...
• Утончённый (masc.adj.)
[oo-tan-chyon-nyj]
Sophisticated, refined
#just_cats
#just_a_joke
#adjectives
😎RCR | Support | Boost