Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
[TERKINI] #COVID19
🔹 KKM jangka tidak berlaku lonjakan kes COVID-19 susulan musim perayaan akan datang
🔹 Tiada varian baharu COVID-19 dikesan dalam negara
🔹 SOP sekarang kekal, KKM teliti tujuh indikator sebelum buat keputusan perketat SOP sedia ada
Sumber : Noor Hisham Abdullah
KEMENTERIAN KESIHATAN MALAYSIA
😳Почему FDA не рекомендует американцам узнавать статус их иммунитета после мРНК-укола?
19 мая, через несколько дней после того, как CDC прекратил сообщать о 95% прорывных случаев FDA делает предупреждение для граждан о том, что "в настоящее время не рекомендуется проводить тестирование на антитела для оценки иммунитета после вакцинации против #COVID19".
"FDA напоминает населению и поставщикам медицинских услуг, что результаты разрешенных в настоящее время тестов на антитела к SARS-CoV-2 не должны использоваться для оценки уровня иммунитета или защиты человека от ковида в любое время, и особенно после того, как человек получил вакцинацию против ковида[мРНК-укол]".
Однако,доктор Нурчашм,кл.иммунолог,призвал:
"каждый врач в Америке должен срочно отправлять своих пациентов на тестирование на уровень антител к ковиду.
“Почему мы не проверяем антитела? Ну, мы не тестируем антитела, потому что они обеспокоены тем, что значительное число людей узнает, что вакцина не сработала"
⚠️Поддержать🇷🇺(с)Skuratoff
#covid19
У диких оленей обнаружили антитела к "омикрону"
Ученые из Пенсильванского университета нашли у диких оленей антитела к омикрон-штамму коронавируса нового типа, следует из исследования в журнале PLOS PATHOGENS.
Исследователи провели выборочное тестирование 131 белохвостого оленя в районе Стейтен-Айленд. По результатам проверки образцов у 19 животных были обнаружены антитела к коронавирусу, секвенирование генома образцов показало, что некоторые из них были заражены омикрон-штаммом.
Ученые опасаются, что эта ситуация может привести к дальнейшей мутации коронавируса среди животных и его обратной передаче человеку. "Полученные нами сведения показывают, что "омикрон" может заражать белохвостых оленей и подчеркивает экстренную необходимость всеобщего наблюдения за подверженными [инфицированию] видами животных, чтобы определить сети экологического распространения [вируса] и лучше оценить потенциальные риски обратной передачи человеку", - указывается в исследовании.
Исследование проводилось в период с 12 декабря 2021 года по 31 января 2022 года, когда в США наблюдался резкий рост заболеваемости коронавирусом из-за распространения омикрон-штамма.
#covid19
Пандемия увеличила число депрессий среди молодых людей на 20 процентов
Нидерландские ученые из Тилбургского университета заявили, что пандемия увеличила число депрессий и тревожных расстройств на 20 процентов среди молодых людей. Результаты исследования опубликованы в Journal of Affective Disorders.
Согласно выводам работы, за год до пандемии COVID-19 среди подростков из Нидерландов в возрасте от 18 до 24 лет 16,7 процента пациентов жили с диагнозом хроническая тревожность и депрессия средней или тяжелой степени. Уже через год после пандемии этот показатель увеличился до 21,4 процента, что эквивалентно 73 тысячам молодых людей. Другими словами, в 2019 году на психические расстройства жаловалось 255 тысяч молодых людей, а через год после начала распространения коронавирусной инфекции это число выросло до 328 тысяч.
Интересно, что среди взрослого населения страны процент пациентов с хронической тревогой и депрессивными симптомами увеличился менее выражено: с 10,9 процента до 11,9 процента за тот же период.
Ученые из США создали прибор для определения короновируса в помещении
Исследователи Университета Вашингтона в Сент-Луисе разработали биосенсор вирусных частиц в воздухе. Он способен за пять минут отследить присутствие любых штаммов коронавируса в многолюдных помещениях и оповестить окружающих.
Система представляет собой прибор, который изначально применяли для обнаружения в крови пациентов следов бета-амилоида, патогенного белка, связанного с развитием болезни Альцгеймера. После начала пандемии исследователи задумались, можно ли адаптировать это устройство для обнаружения частиц SARS-CoV-2.
Авторы работы изменили устройство системы так, чтобы она пропускала через себя не биологические жидкости, а воздух. Они встроили в электроды устройства наноантитела, способные соединяться с оболочками всех известных штаммов коронавируса. При контакте с частицами SARS-CoV-2 сопротивление покрытых антителами электродов меняется, что позволяет выявлять присутствие вируса в воздухе.
В ближайшее время авторы планируют создать биосенсоры, способные выявлять другие патогены, в том числе вирус гриппа, риновирус и прочие возбудители ОРВИ, а также различных больничных инфекций.
#covid19
📜STATEMENT
The NCDC’s COVID-19 Technical Working Group is closely monitoring the local, regional, continental, and global epidemiology of #COVID19 including emerging variants.
Read our official statement on the new #COVID19 subvariants to stay updated
🔗
https://ncdc.gov.ng/news/493/official-statement-on-the-new-covid-19-subvariants
COMING UP📣
Join DG @IfedayoTiffy live on NTA International as he discusses:
#COVID19 Pandemic: Integrated Disease Surveillance Strategy
📆TODAY 20th May
📺NTAi (DSTv ch 251 GOTv ch 114)
⏰4:30 pm (WAT)
📣
The threat of #COVID19 remains within countries, particularly for high-risk groups
Our Head of Communications, @ywoga was live on @thetrusttv to discuss the de-escalation of Nigeria's #COVID19 response & our integrated disease surveillance strategy
🔗https://m.youtube.com/watch?v=WoTNBYmOsjI&feature=youtu.be
The #COVID19 pandemic is being driven by evolving variants with implications on virus transmissibility, host immunity, & disease severity
This PLOS ONE publication assesses the implication of #COVID19 variants-associated outbreaks in a tertiary institution in North-Central Nigeria
🔗Read via
https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0280756
Pre-departure & post-arrival #COVID19 PCR test requirements for all inbound travellers to Nigeria have been suspended
A simplified Health Declaration (non-covid-19 specific) shall be completed by all passengers on arrival in Nigeria.
Pre-departure & post-arrival #COVID19 PCR test requirements for all inbound travellers to Nigeria have been suspended
A simplified Health Declaration (non-covid-19 specific) shall be completed by all passengers on arrival in Nigeria.
🔗PSC-COVID-19 Update
https://covid19.ncdc.gov.ng/media/files/Press_Release_-_Relaxation_of_COVID-19_Rules_Ako_221212_210142.pdf