Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
Что взять на Digital SAT🎒
Приближается первый Digital SAT, поэтому мы решили обновить чек-лист необходимых принадлежностей.
❗️Не забыть:
● Удостоверение/паспорт/свидетельство о рождении
При отсутствии документов вас могут не запустить в аудиторию/центр.
● Ticket
● Полностью заряженное устройство для экзамена
Проверьте, что Bluebook работает на вашем устройстве до теста.
● Зарядный кабель
Must если вы не уверены, что ваше устройство выдержит 3 часа.
● Бутылка воды
Жизненно необходимо, но не пейте слишком много.
● Перекус
Не обязательно шоколад.
● Канцелярия (extra)
Вдруг у вас случится urge прописать задание для его решения; пара карандашей лишней не будет.
● Калькулятор (extra)
Если вам не удобно использовать калькулятор в Bluebook, вы можете принести свой.
● Толстовка (extra)
● Механические часы (extra)
● Одноразовая маска (extra)
#sat
Conquering the SAT/ACT does not guarantee you the spot at Top school.
Here's why. In 2019, the whole Earth, including US, had experienced immense negative impact of the Covid-19, or coronavirus. The virus impacted on the health of living beings, their occupation and income.
On socio-economic side, countries, companies within them, struggled to work at the office, and it was prohibited to do that in a traditional way to avert spreadness of the virus. Thus, companies made a decision to initiate remote (off-office) working system. They used LinkedIn as a tool to hire real people to work and accepted online CVs from all parts of the world. In that way, workforce and output companies possess and produce "survived".
In the same way, the danger coronavirus caused strongly affected admissions process of any school in the world, mostly to the US colleges. The process was divergent than that of 2017-18. Standardized tests, SAT or ACTs, became optional due to quarantine that force-closed the test centers and institutions, so the applicant to spot ratio (ASR) has been rising substantially. Admissions process became more furious. It started to delve into more moral, or personality, of the applicant.
To find out about it, they started to ask more essays other than personal statement. Writing essay about one's personality is hard, even if you have the complete idea. It should contain your growth and answer why and how questions. The idea of the essay may be cliché, but the way you deliver the message should be distinguishable. In other words, test scores does not guarantee the success in US admissions.
By the title, you should've understood by ardent feeling that you don't need to prepare for the test. However, the amount of scholarship school offers somewhat demands on this. All in all, mark my words: "If your choice of school does not require standard test, submit them if asked as a optional."
#sat
The most important book for SAT READING section, includes very important and unique tips, strategies and many more after completing this book ur comprehension will be in the upper level so as always
Save and share
#sat
Sincerely,
@ninjasblog
Finjamos sorpresa 🙃
🔴 El #SAT canceló la autorización para que #FundaciónAzteca reciba donativos tras detectar irregularidades millonarias 💸 | ¿Qué habrán hecho con el dinero? 🤔
「📚」#Studying_tips#Tests#SAT
🍵Я набрала 1530 по SAT за 3 месяца, и вот советы, которые помогли мне подготовиться эффективнее:
1. Жёсткий режим и правильная обстановка😁.
Выделяйте конкретные часы для конкретных предметов. Например, я занималась математикой с 9:00 до 12:00, а английским — с 14:00 до 19:00.
Создайте специальную атмосферу для учёбы: закройте дверь в комнату или идите в библиотеку, если есть возможность. Нам нужен полный FOCUS.
2. Постоянный анализ. Анализ до ниточки😹.
Просто делать 10 практик в неделю — бессмысленно, если вы их не анализируете. Review >> practice. Тратьте в 2 раза больше времени на анализ практик, чем на саму практику. Разбирайте каждый вопрос, в котором вы сомневались хотя бы на 20%.
Именно так вы перестаёте повторять ошибки.
3. Работа над ошибками💕.
После разбора - всегда прорабатывайте ошибки. Разбор показывает ваши слабые места, а работа над ошибками убирает их.
👍 Повторяйте цикл практика → разбор → работа над ошибками
и подписывайтесь для ещё больше полезного контента!
~🐈~
↬@jastm1🌊
Safe Air Transport (SAT) ✈️🇳🇬🇷🇺
Abuja to Moscow
6th September 2024
Lagos to Moscow
30th of September 2024
Students/VIP with advance booking enjoy special rates of up to 40% discount
Use "SAT" to get the best deal on cargo transportation and flight bookings from Nigeria to Russia, from Russia to Nigeria and between various cities in Russia.
+79262385618
https://t.me/nido_russia/1784
#sat#logistics#waybill
Safe Air Transport (SAT)✈️🇳🇬🇷🇺
Abuja to Moscow
5th of September 2024
Lagos to Moscow
5th of September 2024
Students/VIP with advance booking enjoy special rates of up to 40% discount
Use "SAT" to get the best deal on cargo transportation and flight bookings from Nigeria to Russia, from Russia to Nigeria and between various cities in Russia.
+79262385618
https://t.me/nido_russia/1782
#sat#logistics#waybill
Safe Air Transport (SAT) ✈️🇳🇬🇷🇺
Abuja to Moscow
2nd September 2024
Lagos to Moscow
5th of September 2024
Students/VIP with advance booking enjoy special rates of up to 40% discount
Use "SAT" to get the best deal on cargo transportation and flight bookings from Nigeria to Russia, from Russia to Nigeria and between various cities in Russia.
+79262385618
https://t.me/nido_russia/1782
#sat#logistics#waybill