Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
Gedelme Kalesi
https://maps.app.goo.gl/uJwnqTt5MxPgXu2d6
Это одна из достопримечательностей Гедельме плато.
Название крепости переводят как "сушка зерна", "хранение зерна", "зернохранилище" или "Зерно Фригмос".
Этот византийский замок относят к lX веку нашей эры. Считается, что основной задачей его было хранилище зерна всего региона.
Крепость Гедельме сейчас находится в довольно разрушенном состоянии. Но место остается интересным, уникальным, еще и с шикарными видами...
#Анталия
#Kemer
#ТурецкаяТурция
Gedelme mağarası
https://maps.app.goo.gl/zNk4QSeaxgjdbpfH6
Одна из достопримечательностей плато Гедельме расположена, примерно, в ста метрах от Платана возрастом в две тысячи лет.
Пещера Gedelme имеет и другое название. Среди местных она более известна как пещера Peynirdeliği, что означает Сырная Дыра.
Ранее в этой местности было развито скотоводство. Тогда в пещере хранили сыр - она была своего рода холодильником. Даже в летнюю жару здесь довольно прохладно.
Длина пещеры составляет 74 метра, ее максимальная глубина достигает 19-ти. Удачный вариант прохладиться от летней жары и посмотреть колонны сталактитов и сталагмитов, которые формировались миллионы лет.
Вход в пещеру имеет символическую оплату.
#Анталия
#Kemer
#ТурецкаяТурция
Gedelme Çınarı
https://maps.app.goo.gl/29WmvyJZiau4mkMk8
Этот огромный платан растет в древнем поселении на плато Гедельме.
Дерево впечатляющих масштабов - диаметр более 4.5 метров, окружность, по разным данным, 14.26-15.83 метра. Высота - 28 метров.
Возраст этого гиганта - не менее 2000 лет. А по некоторым источникам - не менее 2700 лет...
#Анталия
#Kemer
#ТурецкаяТурция
Kesme Boğazı Mevki
https://maps.app.goo.gl/oa2vtJXTZXCwbbsJA
Этот потрясающий природный уголок находится всего в 10 километрах на запад от Кемера и примерно в 45-ти - от Анталии.
Именно здесь растут Олимпийский Шафран (Crocus wattiorum) и Кемерская орхидея. Эти растения считаются редкими и находятся под государственной охраной.
Kesme Boğazı Mevki связано с легендой. Возможно, вы ее знаете. Согласно легенде, мост, который находится в этой местности, был построен Александром Македонским и полководец им пользовался. Однако, это не более, чем легенда.
Мост относится к римской или ранневизантийской эпохе. Об этом свидетельствует его тип кладки. Во времена Османской империи мост восстановили. Его состояние и сейчас остаётся на высшем уровне.
Местность Kesme Boğazı Mevki имело важное значение. Оно служило ключевым звеном, связывающим древние исторические территории - Ликию с Писидией и Памфилией.
Kesme Boğazı - место, где чудесным образом переплетается уникальная природа и история. А ещё здесь, естественно, есть кафе с завтраками и обедами. Просторные беседки расположены прямо над горной рекой и спуском в эту речку.
При желании можно не только поесть с красивым видом, но и искупаться...
#Анталия
#Kemer
#ТурецкаяТурция
Gedelme Yaylası
Прогулка по Гедельме плато.
Расположено оно на высоте 700 метров, примерно в 15-ти километрах на западе от Кемера.
Это очень богатая древностями местность. Здесь проходит Ликийская тропа и можно встретить лагери путников.
На территории Gedelme Yaylası находится древнее поселение. Из местных достопримечательностей также стоит отметить византийский замок, пещеру...
Gedelme Yaylası - красивое место с шикарным видами и большим количеством старых огромных Платанов (Чинар). Одному из которых - более 2000 лет.
На плато выращивают яблоки, орехи. Здесь растут множество инжировых деревьев.
#Анталия
#Kemer
#ТурецкаяТурция
Kemer
https://maps.app.goo.gl/gruT6zhc31BSkwcj6
Районный центр анталийского региона, о котором, кажется, знает каждый. Но, как правило, эти знания ограничиваются тем, что "Кемер - это туристический центр с пляжами, отелями, клубами, магазинами для туристов..."
Историю заселения территории современного Кемера связывают с античным городом Faselis - это конец Vll века до нашей эры.
Kemer стал городом относительно недавно - около 40 лет назад. Название получил в честь длинной каменной стены. В начале XX века здесь существовало поселение под названием Eski Köy, которое постоянно страдало от наводнений. Чтобы защититься от этого бедствия, у подножия гор построили каменную стену длиной 23 километра. Она будто опоясывала городок, защищая от воды. "Kemer" - в переводе с турецкого - означает "пояс".
Район Kemer богат на природные и рукотворные достопримечательности. Достоинство этой местности - это великолепное сочетание полных лесами гор и моря. Стоит упомянуть трассу Анталия-Кемер - она просто насыщена шикарными видами!..
Пляж города является частью 52-х километровой береговой линии, отмеченной наградой "Голубой флаг". Недалеко от Кемера расположены два прибрежных античных города с пляжами: Олимпос и Фаселис, а между ними - гора Химера с неугасающим огнем.
Продолжают красоты города - охотничий домик сельджуков при въезде в Кемер, плато Gedelme с древним платаном, крепостью и пещерой в 17-ти километрах вглубь гор...
Не остаются без внимания любители тусовок. Кемер - город клубов и громкой музыки, сюда постоянно приезжают музыкальные исполнители.
#Анталия
#Kemer
#ТурецкаяТурция
И снова Кемер
Снова вкусный завтрак в уже любимой кондитерской и купание в бухте.
Но в этот раз другой фокус внимания - красивые цветущие растения, необыкновенные плоды, огромные старые сосны вперемешку с лавровыми деревьями... Как же они пахнут!
И крупный голубой краб, который наблюдал за нами своими выпуклыми глазами.
#Анталия
#Kemer
#ТурецкаяТурция
Сегодня выдался шикарный день с прогулкой по окрестностям Кемера.
Щедрый турецкий завтрак, красивые виды, тенистый пляж с огромными соснами, пение цикад, купание в бухте...
#Анталия
#Kemer
#ТурецкаяТурция
Сегодня Кемер был особенно доброжелателен, красив и вкусен.
Мало кто знает, что ещё до 60-х годов прошлого столетия этот город не имел сухопутных подъездов. К нему можно было добраться только по морю.
Сейчас же к нему ведут классные дороги с тонелями и потрясающими видами.
#Анталия
#Kemer
#ТурецкаяТурция
Günaydın ☀️
Дорога к пляжу Little White Bay.
К счастью, есть еще места (даже в Анталии/Кемере), где почти "не ступала нога человека"...
Этот пляж находится недалеко от Райской Бухты. Но к нему нет подъезда или обустроенного прохода.
К пляжу ведёт только лесная тропа - с красивыми видами, обрывами, руинами античных стен...
#günaydın
#доброеутро
#Kemer
#ТурецкаяТурция
Kemer Pastanesi Fırın&Mutfak
https://maps.app.goo.gl/ZUy5382SFv2Q2amF6
Обычно Кемер воспринимается как абсолютно туристический город с соответствующими заведениями. Но и здесь есть интересные места.
Kemer Pastanesi Fırın&Mutfak - пекарня, которая была основана еще в 1952 году. Она находится в центре города, в пешей доступности от часовой башни.
В 2018-м году стала лучшей кондитерской года, вошла в число лучших заведений и по праву считается одним из важных брендов города.
Основы Kemer Patisserie были заложены ещё в Стамбуле. Основателем стал Turhan Büyükkapucu. Позже имя, традиции и особые рецепты были переданы детям. Сейчас дело продолжает его младший сын Halil Bey.
В этой патисери готовят завтраки. Большие турецкие завтраки Serpme Kahvaltısı тоже есть. Здесь огромное количество выпечки - просто глаза разбегаются! И постоянно приносят новые партии... Впечатлила самса и сырные Pişi.
В патисери очень понравились их корзинки с орехами и сгущённым молоком (süt reçelli). Необыкновенно хрустящая корзинка из песочного теста с ярким привкусом сливочного масла, много разных орехов и сгущенное молоко... Это очень вкусно!
Здесь много видов хлеба. Совершенно разного - из пшеницы, спельты, кукурузы, из темных сортов зерновых, без глютена, сладкого, несладкого...
Если хотите симиты - помните, что выпекают их до часу!
#Анталия
#Kemer
#afiyetolsun
#ТурецкаяТурция
Naturland Vacation Club In Eco Park
https://maps.app.goo.gl/YeqSjUs8KvDa5n9g7
Заброшенный отель находится в городке Çamyuva анталийского региона.
Этот пятизвёздочный отель был открыт в 1988-м году и, проработав более 25 лет, в 2013-м году закрылся. Со временем он превратился в отель-призрак. Это и привлекало туристов - слегка пугающий вид опустошенного отеля...
Длительное время сюда приезжали любители поглазеть на разрушаюшиеся конструкции. Но уже около полугода как вход в отель закрыт. Здесь ведут ремонтные работы. Обещают, что после восстановления отель снова начнет принимать саоих гостей.
Вероятно, какую-то зону выделят в качестве музея истории отеля.
#Анталия
#Kemer
#отель
#ТурецкаяТурция