@besteanimebilder · Post #6689 · 21.09.2021 г., 17:05
PURSUE #original#scenery #school 3440x1440
Hashtags
TGINSIGHT SIMILAR POSTS
Изворен канал @pythonotes · Post #121 · 20 јул.
Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
Пребарај: #school
@besteanimebilder · Post #6689 · 21.09.2021 г., 17:05
PURSUE #original#scenery #school 3440x1440
Hashtags
@dem_events · Post #503 · 16.04.2025 г., 09:55
Летняя школа по демографии НИУ ВШЭ для студентов и выпускников российских вузов, интересующихся демографией пройдет с 30 июня по 4 июля 2025 года Подробности: www.hse.ru/demo/sdp/summer Подача заявок до: 14 мая 2025 года #school
Hashtags
@dem_events · Post #410 · 18.12.2024 г., 12:17
Весенняя школа «Интеграция через поколения: исследование образовательных, профессиональных и семейных траекторий мигрантов» (Integration Across Generations: Exploring the Educational, Occupational and Family Trajectories of Migrants). Пройдет в Турине, Италия, 7–10 апреля 2025 года. Дедлайн: 2 марта 2025 года. Подробности: https://ecsrnet.eu/spring-school/ #school
Hashtags
@dem_events · Post #395 · 06.12.2024 г., 09:58
Весенняя школа MIrreM 2025 "Подход к изучению нерегулярной миграции с количественной точки зрения: данные, оценки, методы" (MIrreM Spring School 2025 on Approaching Irregular Migration from a Quantitative Perspective: Data, Estimates, Methods) пройдет с 19 по 21 марта 2025 года на кампусе Университета непрерывного образования в Кремсе, Австрия. Дедлайн подачи заявок: 18 декабря 2024 года. Подробности: https://irregularmigration.eu/2024/12/03/mirrem-spring-school/ #school
Hashtags
@dem_events · Post #392 · 25.11.2024 г., 12:06
Летняя программа по анализу данных о населении и обществе Институт демографических исследований Макса Планка приглашает студентов на трехмесячную программу (2 июня – 22 августа 2025 года), где участники будут работать в небольших командах с поддержкой опытных наставников над общими исследовательскими целями. Темы программы 2025 года: - "Изменение климата и мобильность" (Climate Change and Mobility), наставники: Ристо Конте Кеивабу, Эбру Санлитюрк, Моника Александр (Торонто). - "Машинное обучение для анализа жизненных траекторий" (Machine Learning for Life Course Trajectories), наставники: Линда Вецгайле, Бруно Арпино (Падова), Эмилио Загени. - "Смертность в условиях войны" (Mortality in War Settings), наставники: Иветт Янг, Диего Альбурес-Гутьеррес, Энрике Акоста (CED), Ирена Чен. Участвовать могут студенты бакалавриата, магистратуры или аспирантуры. Дедлайн: 8 января 2025 года. Подробности: https://www.demogr.mpg.de/en/career_6122/jobs_fellowships_1910/population_and_social_data_science_summer_incubator_program_13651 #school
Hashtags
@dem_events · Post #383 · 18.11.2024 г., 09:11
Трехмесячная летняя стажировка для молодых ученых в International Institute for Applied Systems Analysis (IIASA), Австрия. Программа YSSP предназначена для аспирантов, которые уже несколько лет работают над своей темой и заинтересованы в возможном практическом применении результатов своей работы. Дедлайн подачи заявок на YSSP 2025: 13 января 2025 года. Подробности: https://iiasa.ac.at/early-career/yssp #school
Hashtags
@dem_events · Post #284 · 28.08.2024 г., 09:14
Осенняя школа по цифровой и вычислительной демографии в институте Макса Планка (Topics in Digital and Computational Demography). Пройдет 4-8 ноября 2024 года в гибридном формате Дедлайн: 24 сентября Подробности: https://www.demogr.mpg.de/en/career_6122/international_advanced_studies_in_demography_6682/courses_6931/topics_in_digital_and_computational_demography_13340/ #school
Hashtags
@dem_events · Post #275 · 20.08.2024 г., 10:35
Весенняя школа по восприятию богатства (неравенства) (Spring School on perceptions of wealth (inequality)). Обещают предоставить жилье на время школы! Пройдет 17-28 марта 2025 в Бамберге, Гкрмания Дедлайн подачи заявки: 31 августа Подробности: https://dariatisch.github.io/SPINE/ #school
Hashtags
@dem_events · Post #274 · 20.08.2024 г., 10:28
Второй семинар по открытой науке (Open Science Workshop) в Ростоке, Германия. Пройдет 17-18 марта 2025 года. Дедлайн подачи заявки для очного участия: 15 сентября Есть возможность участия онлайн! Такие заявки можно будет подать позже. Подробности: https://www.demogr.mpg.de/en/news_events_6123/calendar_1921/second_rostock_open_science_workshop_13282 #school
Hashtags
@dem_events · Post #273 · 30.07.2024 г., 09:49
Осенняя школа "Социальная политика: значение, меры и влияние на поведение людей" (Social Policies: meanings, measures and effects on individuals’ behaviour). Пройдет 23-25 октября в Тренто, Италия. Дедлайн: 26 августа Подробности: https://event.unitn.it/tn-square/ #school
Hashtags
@dem_events · Post #204 · 12.03.2024 г., 09:38
Курс для аспирантов "Организационные основания неравенства" (Organizational Foundations of Inequality). Пройдет 10-13 июня в Осло, Норвегия. Дедлайн подачи заявки: 21 апреля Подробности: https://www.uio.no/studier/emner/sv/iss/SOS9237/index.html и https://www.imiscoe.org/news-and-blog/sc-blogs/raced/1990-phd-course-organizational-foundations-of-inequality #school
Hashtags
@dem_events · Post #191 · 26.02.2024 г., 10:14
Летняя школа от Европейского общества исторической демографии - "Исследование неравенства в отношении здоровья с использованием продольных демографических данных" (Research on health inequalities using longitudinal demographic data). Пройдет 24 июня - 4 июля в Лунде, Швеция. Дедлайн подачи: 1 апреля Подробности в прикрепленном файле #school
Hashtags