@podzemlya · Post #995 · 07.09.2023 г., 21:14
Вильнюс, сентябрь 2023 года. #lt
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
Пребарај: #lt
@podzemlya · Post #995 · 07.09.2023 г., 21:14
Вильнюс, сентябрь 2023 года. #lt
Hashtags
@podzemlya · Post #619 · 21.07.2022 г., 19:55
Памятник павшим советским солдатам на Литовской части Куршской косы. Потратив кучу денег, заплатив за паром и за въезд на территорию природного парка, первое, что вас встретит — это огромное каменное лицо, полное печали. Подходя ближе к памятнику чуть не упал плашмя, споткнувшись о разбитые ступеньки, территория мемориала выглядит не заброшенной, а забытой, но это часто случается с советским наследием в Балтийских странах. Выглядит изваяние интересно, тяжелый камень, согласно информации, поднят с морского дна около Куршской косы. Вызывает холодную грусть и ощущение тяжести прошлого, которое до сих пор никто не может забыть по-своему. Кто знает, возможно и этот мемориал исчезнет из-за нового витка борьбы с советскими памятниками, но наверное никому от этого легче не станет. #lt
Hashtags
@podzemlya · Post #1071 · 22.10.2023 г., 09:30
Проехал по трассе Рига - Вильнюс в автобусе старой доброй фирмы Lux Express. Автобус приехал из Таллина, из него вышел водитель и стал помогать пассажирам достать багаж. Я вспомнил этого мужчину. Раньше он работал на маршруте Рига - Москва, на котором я ездил очень часто. Он отличался от других водителей тем, что был моложе остальных. Сейчас он уже был с бородой и не таким растерянным, как в прошлом. Помню еще другого водителя, очень высокого. Он в одном из моих последних рейсов на границе болтал с пограничниками как старый приятель и говорил, что развелся и начинает новую жизнь. Но кроме него новая жизнь началась у всех нас. Когда я купил билет на автобус, в Lux Express попросили уточнить мои данные из-за совпадения имени с каким-то санкционным списком. Автобус в Москву давно отменен. Ехал и смотрел в окно, как светотень поглощает поля и как черные тучи грозно висят над маленькими балтийскими селами. #lv#lt
@viviyuTW · Post #370 · 25.01.2021 г., 04:40
@VIVIYU小世界 [中壢美食]LT Pâtisserie 法式甜點工作室|隱身在社區之中的甜點店~冬天草莓季開始囉 鄰近於中壢健行科大後門附近的『LT Pâtisserie 法式甜點工作室』,是間隱身於社區內的甜點工作室,主廚有取得藍帶廚師的證照,主要是採生日蛋糕、甜點預訂外帶的方式,如果真的等不及,店內也有小巧的四個座位區,可以選擇內用的方式。 https://www.viviyu.com/archives/35280 #LT Pâtisserie 法式甜點工作室 #中壢甜點 #中壢甜點工作室 #中壢蛋糕 #健行大學美食 #健行科大 #桃園法式甜點 #桃園甜點 #桃園美食 #甜點蛋糕
@ultimoraPOLITICS · Post #39318 · 12.05.2022 г., 18:59
#Sondaggi#Lituania Sondaggio di Spinter tyrimai: #TS/#LKD|EPP: 20% (+1) #DSVL|Verdi conservatori: 15% (-1) #LSDP|S&D: 14% (-1) #LVŽS|G/EFA: 11% #LRLS|RE: 9% #LP|RE: 6,5% (+1) #LT|Centro-destra: 6% (-1) #DP|NI: 6% Data rilevazione: 20-28 aprile +/-: 17-25 marzo Intervistati: 1007 @UltimoraPolitics
@libertaeragione · Post #4273 · 27.10.2024 г., 22:48
#Elezioni#Lituania Composizione del prossimo #Seimas: #LSDP|S&D: 52 seggi (+39 rispetto al 2020) #TS|EPP: 28 (-22) #NA|Destra radicale regionalista: 20 (+20) #DSVL|G/EFA: 14 (+14) #LRLS|RE: 12 (-1) #LVŽS|ECR: 8 (-24) #LLRA|ECR: 3 Indipendenti: 2 (-2) #NS|Estrema destra cristiana: 1 (+1) #LT|Centro-destra: 1 Totale seggi: 141 Maggioranza: 71 @OsservatorioEsteri
@ultimoraPOLITICS · Post #39332 · 13.05.2022 г., 11:01
#Sondaggi#Lituania Sondaggio di Baltijos tyrimai: #DVSL|Verdi conservatori: 22% (+3) #LSDP|S&D: 19% (+1) #TS/#LKD|EPP: 15% (+2) #LT|Centro-destra: 11% (+1) #LRLS|RE: 9,5% (-1,5) #LVŽS|G/EFA: 7% (-0,5) #DP|NI: 6% (-2) #LLRA|ECR: 4% (-1) #LP|RE: 3% (-1) #TTS|Destra: 1,5% #LRP|Centro-sinistra: 1% (-1) #LCP|Centro ruralista: 1% #LŽP|Verdi di centro: 1% Data rilevazione: 13-28 aprile +/-: 10-24 marzo Intervistati: 1009 DVSL, il partito dell'ex Primo Ministro Saulius #Skvernelis, raggiunge un nuovo record di percentuale (22%). @UltimoraPolitics
@libertaeragione · Post #4262 · 14.10.2024 г., 10:51
#Elezioni#Lituania Risultati definitivi: Affluenza: 52,06% #LSDP|S&D: 19,74% #TS|EPP: 18,32% #NA|Destra radicale regionalista: 15,29% #DSVL|G/EFA: 9,42% #LRLS|RE: 7,85% #LVŽS|ECR: 7,16% #LP|RE: 4,59% #LLRA|ECR: 3,96% #NS|Estrema destra cristiana: 2,93% #LLP|Sinistra russofila euroscettica: 2,69% #TK (#DP-#LKDP-#ŽP)|Populisti|ECPM: 2,24% #LRP|Centro-sinistra conservatore: 1,93% #LŽP|Verdi di Centro europeisti: 1,71% #TTS|ESN: 1,41% #LT|Centro-destra: 0,77% In foto, la mappa del voto. @OsservatorioEsteri
@BookLogSFW · Post #90338 · 13.05.2026 г., 10:55
书名:我把基友变成妹-还可以抢救 文件:繁体中文 · TXT · 6MB · 189.5万字 · 2R 统计:384热度 | 37下载 | 0点赞 | 0收藏 评级:10分 (1人) 💬 质量:10分 (1人) 标签:#刘霖#lt#gt#萧若#南澜#何柔#斯特尔#南菡#能力#埃利奥特#ads#茅鸿#王雪#徐岩#卧槽#司浩言#博士#伊甸园#女孩#艾莎#清楚 #预览#SFW#评级 :★★★★★ #文件 :★★★★★
@BookLogSFW · Post #90340 · 13.05.2026 г., 10:59
书名:我把基友变成妹-还可以抢救 文件:繁体中文 · TXT · 6MB · 189.5万字 · 2R 统计:384热度 | 37下载 | 0点赞 | 0收藏 评级:6分 (1人) 💬 质量:6分 (1人) 标签:#刘霖#lt#gt#萧若#南澜#何柔#斯特尔#南菡#能力#埃利奥特#ads#茅鸿#王雪#徐岩#卧槽#司浩言#博士#伊甸园#女孩#艾莎#清楚 #预览#SFW#评级 :★★★☆☆ #评价 :未删减版,排版也不错,但时不时蹦出来一句“百度搜索”很影响观感 👍[0]👎[0]
@BookLogSFW · Post #90339 · 13.05.2026 г., 10:56
书名:我把基友变成妹-还可以抢救 文件:繁体中文 · TXT · 6MB · 189.5万字 · 2R 统计:384热度 | 37下载 | 0点赞 | 0收藏 评级:10分 (1人) 💬 质量:10分 (1人) 标签:#刘霖#lt#gt#萧若#南澜#何柔#斯特尔#南菡#能力#埃利奥特#ads#茅鸿#王雪#徐岩#卧槽#司浩言#博士#伊甸园#女孩#艾莎#清楚 #预览#SFW#评级 :★★★★★ #评价 :完整版!未删减!好评! 👍[0]👎[0]