Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
Говорите о своих чувствах близким и родным, уделяйте им свое время. Пока оно еще есть-сегодня и сейчас. Прямо сейчас сделайте это, позвоните, напишите сообщение, если они рядом подойдите и обнимите. Это большое счастье, когда есть кому сказать -«Я тебя люблю!».
И напишите мне тут, что вы при этом почувствовали, какая была реакция у человека кому вы это сказали?
#армандавлетяров#armandavletyarov#клубарманадавлетярова
Есть несколько качеств успешного человека-никогда не унижать своего коллегу, брать ответственность на себя, дисциплина и конечно образование. Развиваться самому всегда, учиться и расти.
Что ты вы еще добавили к этому?
#армандавлетяров#armandavletyarov#клубарманадавлетярова
Мы все хотим, чтобы дети были лучше нас. Чтобы читали, развивались, не зависали в телефонах, умели думать, ставить цели. Но давайте честно-они же смотрят не на наши слова, а на нас. Если дома папа и мама постоянно с телефоном в руке, странно ждать, что ребёнок выберет книгу. Он просто повторяет. Не потому что плохой, а потому что так устроено-дети копируют.
Сегодня вообще посмотрите вокруг. В кафе, в аэропорту, дома-все в экранах. Мы сами первыми хватаемся за телефон, как только появляется пауза. И потом удивляемся, что молодёжь не читает серьёзную литературу, не умеет концентрироваться, быстро устает. А откуда этому взяться, если пример другой?
Я всё больше понимаю одну простую вещь: начинать нужно с себя. Не с нотаций, не с запретов, не с «положи телефон». А с себя. Хочешь, чтобы ребёнок читал-сядь рядом и читай. Хочешь, чтобы уважал время-перестань сам тратить его впустую. Хочешь глубоких разговоров-убери экран и поговори.
Это не про идеальность. Я сам такой же, меня тоже затягивает эта бесконечная лента. Но если мы хотя бы осознанно начнём что-то менять у себя, дома начнёт меняться атмосфера. А дети всегда чувствуют атмосферу.
Всё просто. Они становятся тем, что видят каждый день. И вопрос только один-что они видят у нас?
Отправь это видео тем кому надо об этом напомнить или просто сделай ретвит. Пусть больше людей вокруг на это еще раз обратят свое внимание.
#армандавлетяров#armandavletyarov#клубарманадавлетярова
Вчера выступил на форуме @otandastar_qory в Астане! Хотел бы добавить к своему выступлению. Любить и гордиться своей исторической родиной-важно, приносить пользу стране и людям нужно! Согласны со мной ?) #Казахстан#Астана#Алматы#АрманДавлетяров#armandavletyarov
Иногда люди думают, что шоу-бизнес меняет человека. Что там невозможно сохранить простые человеческие вещи. Но, если честно, всё гораздо проще.
Хотя и есть в этом доля правды.
Человека не меняет профессия. Человека показывает то, какой он есть на самом деле.
Можно работать в любой сфере -в бизнесе, на телевидении, в политике, в медицине, в школе. Но в конце дня остаётся один простой вопрос: каким человеком ты сегодня был для других?
Как ты разговаривал с людьми. Уважал ли тех, кто рядом. Сдержал ли слово. Нашёл ли время для семьи и близких. Поддержал ли того, кому было тяжело.
И ваши дети это очень хорошо чувствуют. Они не слушают длинные лекции. Они просто смотрят на нас.
Смотрят, как мы живём, как общаемся, как относимся к людям, как умеем благодарить, как умеем любить.
И именно из этого, из маленьких ежедневных поступков, и складывается самое главное воспитание.
Поэтому не так важно, где ты работаешь и какую должность занимаешь. Гораздо важнее, каким человеком ты остаёшься каждый день. Работа и должности рано или поздно заканчиваются, остаются человеческие отношения, если конечно ты их за эти годы приобрел.
Вы что об этом думаете?
#армандавлетяров#armandavletyarov#клубарманадавлетярова#россия#казахстан
Сегодня всё просто:
написал сообщение-и вроде всё, дело сделал.
Поздравил. Отметился. Побежал дальше.
А в душе-пусто.
Потому что сообщение-это не человек.
Человеку нужен человек.
Голос услышать.
В глаза посмотреть.Улыбнуться.
Руку пожать. Крепко обнять.
У нас дома за столом телефонов нет. Это правило для всех и для наших гостей тоже.
Просто убираем-и всё.
Сидим, разговариваем, смеёмся.
Живём.
Потому что семья-это не когда все рядом и каждый в своём телефоне.
А когда реально вместе.
И вот что важно:
самое ценное-это внимание.
Не деньги. Не понты. Не лайки.
А время, которое ты отдал близкому.
Потому что это греет и твою душу тоже.
И делает тебя сильнее.
Позвони,заедь,обними.
Найди обязательно время.
Будь рядом. Прямо сейчас скажи близкому человеку, что ты его любишь.
Не откладывай.
Берегите друг друга.
С благословенной пятницей.
Жума кабыл болсын.🤲
#армандавлетьяров#armandavletyarov#клубарманадавлетярова
Құрметті достар Алматыға келіп керім болып отырмын қазақша сөйлеп 😅
Сіздердің маған десен сың айтқандарыңыз өте орынды. Қазағымның жаны ашып жатқанығой. Бірақ мен де өз тарапымнан ана тілін үйренуге тырысамын. Сіздерге алғысым шексіз. Рахмет ағайын!❤️
Айьпақшы, менің қазақшам жақсырақ болды ма?😄
#Казахстан#Астана#Алматы#Армандавлетяров#Armandavletyarov#всегдавашармандавлетяров
Простая истина,а которой надо помнить. Воспитывайте себя, ваши дети будут такие же как и вы! Кто согласен, а кто думает по другому? Перешлите это видео сейчас тому, кому нужно об этом напомнить. #Россия#Москва#Казахстан#Астана#Алматы#Армандавлетяров#Armandavletyarov
Как то я услышал фразу-«За дорогой одеждой, люди прячут свою пустую душу. » Сначала меня это возмутило, как же так? Не согласен. Но когда осмотрелся вокруг, посмотрел на тех своих знакомых, кто тратит огромные суммы на брендовую одежду. И всячески этим бравируют, гордятся этим и чувствует превосходство над остальными. Что они представляю из себя, какие они люди? Какие у них ценности и можно ли им доверять? И в большинстве случаев( бывают исключения) это именно так. Пустые души, одинокие и несчастные эгоисты, и в этом их утешение, в дорогой одежде, которые скупаются тоннами. Потому что больше никого рядом нет. Я, у меня, мне, я, я, я….. и тд. Все и всегда о себе любимом. Есть другая категория людей,
которые на последние деньги покупают дорогие сумки и одежду за 1000 и более долларов, чтобы не иметь ничего внутри неё. Купите сумку за 10 долларов, и имейте 990 долларов в ней.
НЕ СТАНОВИТЕСЬ БЕДНЫМИ, ПЫТАЯСЬ ВЫГЛЯДЕТЬ БОГАТЫМИ. Согласен на 100%! Таких людей тоже видно за версту и очень жаль что они в этих вещах, которую не могут сегодня себе позволить, видят какую то ценность. Я и сам когда то этим «грешил» и думал , что это круто не имея в кармане денег , носить дорогую сумку и тд. И радовался этому. А сейчас смешно и порой стыдно за тот период. Я люблю красиво одеваться, тем более могу это себе позволить, но это уже не важно для меня сейчас. Главное удобно, опрятно и не парюсь об этом вообще. Лучше эти деньги потратить на что то важное, благое и полезное. Говорят по одежке встречают……. Закончите вы эту фразу, всем она знакома. Есть ли в вашем окружение такие люди? Что вы думаете об этом? Кто согласен со мной смайлик в комментариях. Если есть кому об этом напомнить, перешлите, отметь его (её) или ретвит. #Россия#Москва#Казахстан#Астана#Алматы#Армандавлетяров#Armandavletyarov
Несколько советов которые я даю своим сыновьям. Возможно и для вас они будут полезны. Вера, молитва, дорожить и любить свою семью, родителей. быть искренними, это залог вашего успеха и счастья. Добавьте в коментах ниже от себя еще несколько советов, которые вам помогли в жизни? Мне очень интересно. Перешлите это видео тем, кому надо это услышать сейчас или отметь их в комментариях.#Россия#Москва#Казахстан#Астана#Алматы#Армандавлетяров#Armandavletyarov
Несколько дней назад я подарил поездку на Умру этим замечательным людям-Зарине и Ролану. Они оба инвалиды 1 и 2 ой степени, живут в посёлке в Алматинской области. Она обучает Корану, детей в своей деревне. Он помогает ей в этом. В браке они 8 лет, познакомились и поженились уже после аварии в которую он попал за два года до этого. Помогли найти их и организовать с ними встречу @qonaq.hajj! Спасибо вам за это! Присоединяйтесь и вы к этой программе. Давайте вместе делать добрые дела и помогать другим. Столько эмоций было у этой семейной пары,что все кто был в комнате, не смогли сдержать своих слез! Я еще пол часа ехал в машине и слезы текли от пережитых эмоций. Это не забываемые чувства. Теперь по поводу того почему, я об этом пишу, а не делаю скрытно. Изначально я так и планировал, но позже меня убедили @qonaq.hajj , что надо об этом рассказать,что бы это было призывом для других людей. Кто захочет тот правильно поймет. Важно,что эта семья счастлива и совершит главную поездку в своей жизни! Альхамдулиллах! С благословенной пятницей! 🤲#Казахстан#Астана#Алматы#АрманДавлетяров#armandavletyarov#умра
Закончились съемки нашей программы “Төрлетіңіз Арман & Ляйля шақырады!”Спасибо большое всем, кто готовил её, снимал и принимал участие!🙏Сморите каждую субботу в 21-00 на @jibek_joly.tv❤️ Кто помнит группу Аркас? #Казахстан#Астана#Алматы#Армандавлетяров#Armandavletyarov#jibekjolytv