TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки

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

Резултати

Пронајдени 184 слични објави

Пребарај: #ru

当前筛选 #ru清除筛选

19.04.26 Сумы - Мирополье Позиционные боевые действия в Сумской зоне безопасности. ВС РФ продвинулись на 1 км от демаркационной линии к Мирополью с восточного направления. Передовая позиция ВС РФ под огнём ВСУ. 1:26 50.993179,35.316483 Источник 21+ Геопривязка #ru

Hashtags

18.04.26 Краснополье - Таратутино Позиционные боевые действия в Сумской зоне безопасности. Передовая позиция ВС РФ в Таратутино подверглась обстрелу ВСУ. ВС РФ продвинулись в Сумской области на 3,5 км и достигли новых позиций в населённом пункте. 0:43 50.728385, 35.375816 Источник 21+ Геопривязка #ru

Hashtags

16.03.26 Северск - Резниковка Активные боевые действия в районе Северска. Пехотная атака ВС РФ в Резниковке. Штурмовая группа зачищает позицию ВСУ в жилой застройке и увеличивает зону контроля на 700 метров. 48.838569,37.977290 Источник https://t.me/OMSBr_123/1754 Геопривязка #ru

Hashtags

ZOKA's Channel

@zoka200 · Post #50029 · 13.04.2026 г., 08:53

13.04.26 Великая Новосёлка - Александроград Активные боевые действия в районе Великой Новосёлки. Военнослужащие ВС РФ занимают новые позиции под огнём противника на рубеже Искра - Александроград. Увеличение зоны контроля ВС РФ на 2,5 км по фронту на левом берегу реки Волчья. 0:26 48.010070,36.619011 Источник 21+ Геопривязка #ru

Hashtags

ZOKA's Channel

@zoka200 · Post #50008 · 12.04.2026 г., 18:00

12.04.26 Сумы - Мирополье Позиционные боевые действия в Сумской зоне безопасности. Военнослужащие ВС РФ попали под обстрел ВСУ западнее посёлка Мирополье. ВС РФ продвинулись в Сумской области увеличив зону контроля до 3 км от демаркационной линии. 51.037774, 35.344966 Источник 21+ Геопривязка #ru

Hashtags

ZOKA's Channel

@zoka200 · Post #49977 · 11.04.2026 г., 18:17

11.04.26 Константиновка - Долгая Балка Позиционные боевые действия в районе Горловки. Передовая позиция ВС РФ в жилой застройке Долгой Балки под огнём дронов ВСУ. ВС РФ продвинулись на 1 км к северу от Степановки и заняли новые позиции в южной части посёлка Долгая Балка. 0:14 48.481047, 37.607169 Источник 21+ Геопривязка #ru

Hashtags

ZOKA's Channel

@zoka200 · Post #49974 · 11.04.2026 г., 15:21

11.04.26 Краснополье - Новодмитровка Позиционные боевые действия в Сумской зоне безопасности. Штурмовые подразделения ВС РФ продвинулись более 4,5 км в направлении на Краснополье и заняли новые позиции в восточной части Новодмитровки. Передовая позиция ВС РФ в жилой застройке посёлка под обстрелом с дрона ВСУ. 1:38 50.75527, 35.39651 Источник 21+ Геопривязка #ru

Hashtags

ZOKA's Channel

@zoka200 · Post #49961 · 11.04.2026 г., 09:48

11.04.26 Константиновка - Степановка Позиционные боевые действия в районе Горловки. Передовая позиция ВС РФ в окрестностях Степановки подверглась обстрелу со стороны ВСУ. ВС РФ продвинулись более1.5 км и вышли на северные окраины Степановки. 0:39 48.473420,37.613850 Источник 21+ Геопривязка #ru

Hashtags

ZOKA's Channel

@zoka200 · Post #49702 · 06.04.2026 г., 13:38

06.04.26 Северск - Никифоровка Активные боевые действия в районе Северска. Атака ВС РФ пехотным подразделением севернее Никифоровки. Штурмовая группа зачищает позицию ВСУ. ВС РФ продвинулись около 2 км и увеличили зону контроля на рубеже Никифоровка - Каленики. 48.80452, 37.92016 Источник 21+ Геопривязка #ru

Hashtags

ZOKA's Channel

@zoka200 · Post #49698 · 06.04.2026 г., 07:50

06.04.26 Покровское - Берёзовое Позиционные боевые действия в Днепропетровской зоне безопасности. Передовые позиции ВС РФ в Берёзовом подверглись обстрелу ВСУ. ВС РФ заняли ряд новых позиций в посёлке увеличив зону контроля на 1 км. 0:19 47.871420,36.492084 1:13 47.874686,36.491471 Источник 21+ Геопривязка #ru

Hashtags

ZOKA's Channel

@zoka200 · Post #49339 · 31.03.2026 г., 17:03

31.03.26 Северск - Кривая Лука Активные боевые действия в районе Северска. Атака ВС РФ подразделением легких мотострелков около Кривой Луки. Штурмовик ВС РФ попал под обстрел ВСУ на трассе к посёлку. ВС РФ увеличили зону контроля выйдя на рубеж Каленики-Кривая Лука. 0:41 48.860286,38.001178 0:43 48.859195,37.930673 Источник 21+ Геопривязка Геопривязка так же по https://t.me/creamy_caprice/11418?single #ru

Hashtags

ZOKA's Channel

@zoka200 · Post #49132 · 27.03.2026 г., 09:17

27.03.26 Красноармейск - Белицкое Позиционные боевые действия в районе Красноармейска. ВС РФ заняли ряд новых позиций в восточной части Белицкого. Передовые позиции в жилой застройке под огнём ВСУ . Продвижение ВС РФ более 600 метров. 0:06 48.40801, 37.1914 0:18 48.40476, 37.19765 Источник 21+ Геопривязка #ru

Hashtags

123•••10•••1516
ПретходнаСтраница 1 од 16Следна