Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
🤝Check Your Airdrop Eligibility
The Airdrop has arrived, check your $ELT allocation right now.
⚡️Complete the verification process
→Go to this page & connect the wallet you grinded with
→ Follow the 🌐Telegram Channelto be eligible
→ Once it's done, your Airdrop allocation will be revealed right on the page
🚀 If you’ve been trying your best, this is your moment. If not?
🎰🎰Season 2 is Live!🎰🎰🎰
#Trade#DEX#Airdrop#ELT#Electra
👀 ‘See’ or ‘watch’? 🤷 These two verbs both involve our eyes – but their meaning and use is slightly different. Here’s a quick tip from Phil! 🤩 Now, complete the gaps with ONE of the words (use the same word for both gaps):
Can you __ the North Star? I can’t __ it.
1. see
2. watch
#learnenglish#englishtips#ELT#grammar#vocabulary
#вакансия#Data#Engineer#разработчик#ELT#Middle+ #Senior#удаленно
Компания: Smart Solutions LTD
Уровень зп: 15$ per hour;
Локация: worldwide;
Формат: удаленная работа;
Занятость: part-time;
Опыт: от 4 лет.
Senior/Middle Data Engineer (ETL)
Требования:
у нас есть база данных postgres, которая может содержать миллионы строк, но нам нужно более быстрое извлечение данных.
Мы думаем об elastic search, но не уверены, ищем консультацию с опытным инженером по данным
Задачи:
Помогите найти правильное масштабируемое решение.
Резюме ожидаю в Тг @buna_seara_aqrt
могу платить криптовалютой
#developer#вакансия#vacancy#middle+ #удаленка#job#senior#elt#dwh#yandex#dwh#data
Вакансия: Data Engineer
Компания: SConsulting
Город и адрес офиса: удаленка (без ограничений: пол, возраст, здоровье)
Локации: СНГ/Весь мир. Москва (UTC+03:00, Europe/Moscow) ± 2 ч
Занятость и формат работы: part-time/full-time/remote
ЗП: от 250 000 до 290 000
Приглашаем Data Engineer - эксперта, специализирующегося на data-продуктах – хранилищах данных, платформах данных (YDL/ADL).
Обязанности:
Построение цепочек загрузки и трансформации данных и промежуточных витрин данных в Yandex Data Lake:
• выявление существующих цепочек трансформации данных, используемых для отчетов в текущих DWH - SAP BW и Azure DL;
• создание аналогичных потоков трансформации данных в Yandex DL;
• создание промежуточных витрин данных для последующего построения отчетов;
• оптимизация цепочек загрузки и трансформации данных (при наличии такой возможности) в новом DWH;
• создание технической документации для дальнейшей поддержки нового DWH, цепочек загрузки/трансформации данных, промежуточных витрин данных;
Требования:
• Опыт работы в области управления и обработки данными от 3 лет;
• Профессиональное владение SQL;
• Более двух лет практического опыта работы с Python, Spark;
• Опыт работы с технологиями на основе Hadoop (HDInsight, Spark, Hive, Pig, Scala и т. Д);
• Обширный опыт работы с инструментами ETL, такими как Azure Data Factory, SSIS, Pentaho и т.д.;
• Обширный опыт работы с технологиями хранения Azure и Yandex;
• Практический опыт использования инструментов управления конфигурацией и автоматизации, таких как Azure DevOPS, Ansible, DSC, Puppet, Chef, Salt и т.д.
Мы предлагаем:
Оформление в соответствии с требованиями законодательства РФ;
Конкурентный уровень зарплаты с индексацией;
Карьерный и профессиональный рост;
Работа в стабильной компании;
Дружелюбный процесс интервью с заказчиком;
Комфортные условия удалённой работы в дружном и сплочённом коллективе;
Чётко выстроенные процессы;
Культура наставничества и сильная техническая экспертиза в команде;
Проекты внедрения в крупнейших компаниях России.
Удаленная работа.
Контакты: @scons2000
🤢😔 Everybody gets sick from time to time… so we made a vocabulary table with useful sickness-related English for you to learn, use, and share with a friend! 😄
Do you know any more English vocabulary related to illness? 👇
#englishvocabulary#learnenglish#englishphrases#britishenglish#EFL#ESL#ELT#vocab#bbclearningenglish
😊 These two adverbs seem similar, but they’re quite different! 💡 Here’s a quick tip from Sian! 🤓 Now, complete the sentence:
George only came in _____ to pick up his jacket - he’d left it here yesterday.
1. briefly
2. shortly
🤔 Want to learn more? 🤩 Here’s a useful lesson on adverbs. Link in bio.
#learnenglish#englishtips#ELT#ielts#grammar#adverbs#briefly#shortly#confusingwords
❓❓❓Do you know how to respond when an English speaker asks ‘Is the post office open today?’ 🏣Try this quiz - we’ll tell you the answer later! Are there any other ways you could respond?👇👇👇
[Image: Getty]
#learnenglish#socialenglish#correctresponse#englishquiz#english#englishvocabulary#learnenglish#englishphrases#contraction#question#shortanswer#britishenglish#EFL#ESL#ELT#vocab#bbclearningenglish