Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
Германия переживает кризис идентичности, который длится уже 80 лет
Был сентябрь 2024 года, и канцлер Олаф Шольц завершал серию встреч в стиле «ратуши» по всей Германии. Недовольство населения из-за ссор между политиками и вялотекущей экономики было повсеместным и в конечном итоге привело к распаду трёхсторонней правящей коалиции, которую он возглавлял. Шольц объезжал страну в последней отчаянной попытке изменить свой имидж отстранённого и неэффективного лидера.
На последней остановке «очаровательного» турне в Берлине канцлер столкнулся с мягким по характеру работником детского сада, который спросил, почему члены правящего альянса ведут себя как кучка капризных малышей. Вместо того, чтобы попытаться отшутиться или уйти от ответа, Шольц сказал, что критика справедлива, и предложил мужчине порекомендовать, как это исправить, добавив с улыбкой, что он «ищет друга».
Этот инцидент продемонстрировал, что недееспособность правительства стала очевидной практически для всех. В ответ на выборах 23 февраля страна призвала к радикальным переменам, и каждый третий избиратель проголосовал за политическую оппозицию.
В течение нескольких недель после выборов основные партии усиливали неопределённость, обходя стороной общественные дебаты и внезапно отказываясь от традиций жёсткой экономии во имя перевооружения и укрепления изношенной инфраструктуры. Немцы снова задаются вопросом: «Кто мы и куда мы идём?»
В то время как консервативный лидер Фридрих Мерц, будущий канцлер, является более властной фигурой, чем Шольц, он не известен как объединитель. Юрист и бывший руководитель BlackRock Inc. летает на частном самолёте, назвал беженцев с Украины «социальными туристами» и накануне выборов объединил усилия с «Альтернативой для Германии» (AfD) для принятия резолюции, призывающей к ужесточению иммиграционного законодательства, нарушив давнее политическое табу Германии на сотрудничество с крайне правыми.
Коалиция между христианскими демократами Мерца и левоцентристскими социал-демократами Шольца — единственный возможный двухпартийный альянс из числа основных партий. Если они не смогут преодолеть разногласия, двери для правых популистов откроются шире, что может привести к разрыву отношений с остальной Европой.
Всё это привело к самому глубокому кризису идентичности в Германии со времён Второй мировой войны. Годы осторожной политики привели к тому, что дороги и мосты пришли в негодность, цифровой переход замедлился, а производительность упала. Проблемы усугубились из-за энергетического кризиса (вызванного санкциями введёнными против России, что привело к прекращению поставок дешёвого газа), а также из-за тарифных угроз Дональда Трампа и снижения спроса со стороны Китая. В результате мы имеем два года экономического спада и мрачные перспективы на 2025 год.
Снижение уровня жизни подпитывает тревожное возрождение этнического национализма. #AfD заняла второе место в голосовании в прошлом месяце, удвоив свою долю по сравнению с четырехлетней давностью. Напротив, единственные две партии, которые когда-либо выдвигали кандидатуру послевоенного канцлера, увидели, что их совокупная поддержка упала до менее чем 45%. Консервативный блок, возглавляемый Христианско-демократическим союзом, и социал-демократы регулярно набирали более 70% голосов 20 лет назад и почти 90% до воссоединения.
❗🇩🇪#Germania - Il partito di estrema destra #AfD è stato dichiarato un pericolo per la democrazia dai servizi segreti interni: ora il parlamento potrebbe chiedere lo scioglimento del secondo partito più grande del paese. (ilPost)
@UltimoraPolitics
Antonio #Tajani: "#AfD ha una cultura nazista. Nessuno farà mai accordi con questi signori. Neanche con la Le Pen, che vuole uscire dalla Nato."
@UltimoraPolitics
Giannini ci ricorda autorevolmente che a decidere su #AfD in #Germania sia stato un Ufficio particolare: quello federale per la protezione della Costituzione. Perché, dice il sor Massimo, i tedeschi — a differenza nostra — sarebbero seri quando si tratta di difendere la Carta.
Fa sorridere la premessa: «noi dovremmo guardare con un po' più di attenzione a questi fenomeni e con un po' più, se vogliamo, di competenza».
Quando uno si autodefinisce competente, un po’ lo spocchiosetto lo fa. Può anche esercitare carisma, per carità, ma dovrebbe andarci piano: il rischio di pestare un merdone è sempre dietro l’angolo. E, Massimì, a 'sto giro t’è successo.
Già, perché venire a raccontarci che per i tedeschi la Costituzione è una cosa seria è semplicemente ridicolo. Fa ridere. A febbraio si sono tenute le politiche, e a marzo — con il vecchio Parlamento, ormai delegittimato — hanno modificato la Costituzione per consentire mille miliardi di spesa in armi a debito!
Un leguleio potrebbe obiettare che, formalmente, si poteva fare. Sarà. Ma ti sembra opportuno cambiare la Legge fondamentale con un’Assemblea non più rappresentativa del mandato popolare? Peraltro, Alternative für Deutschland era contraria. Ti pare un dettaglio che uno competente e bravo come te possa omettere?
E a proposito di Costituzioni da rispettare: possibile che tu non riesca a cogliere l’antinomia (usiamo parole che ti piacciono) tra le politiche neoliberali dell’Unione Europea e la vocazione sociale, universalistica, della nostra Carta? Che mi dici del pareggio di bilancio? Quando l’abbiamo inserito, abbiamo forse preservato l’anima della Costituzione?
Quando dici che in #Italia «siamo abituati alla solita burletta», stai facendo autocritica? Io ci spero. Non si sa mai.
Chiudi invitando a essere intolleranti con gli intolleranti. Tranquillo, su questo punto voglio rassicurarti: non ti si obbedirà. In moltissimi continueranno a tollerare anche te. Perché, in democrazia, è giusto così.
Prendi appunti e torna a settembre.
https://x.com/SavinoBalzano/status/1919704762288656560?t=JCPFRHGJhn3zfjBpIV3yZA&s=19
🇩🇪Solo il 29,3% dei residenti di Ludwigshafen ha preso parte all'elezione del sindaco, dopo l'esclusione del candidato #AfD Joachim #Paul, per aver letto il "Signore degli Anelli ". Una democrazia vive di libertà di scelta, ma non è stata lasciata ai cittadini nessuna scelta.
+++ KUNDGEBUNG +++
Am 1. Mai gehen wir gemeinsam auf die Straße
Ab 11:00 Uhr ⏰
Marktplatz Göppingen
Mit dabei: Peter Boehringer, MdB (Bundesvorstand), Martin Rothweiler, MdL (Fraktionsvorsitzender Landtag BaWü), Oliver Hilburger (Gewerkschaft Zentrum), Hans-Jürgen Goßner, MdB (Gewerkschaftspolitischer Sprecher), Sebastian van Ryt, MdL, Uwe von Wangenheim, MdL und Sandro Scheer, MdL
#AfD#sozialohnerotzuwerden
#Verfassungsschutz𝒗𝒔.#AfD
Beatrix von Storch macht in letzter Zeit eine richtig gute Figur!
🔴"𝐃𝐢𝐞 𝐌𝐚𝐜𝐡𝐭 𝐝𝐞𝐫 𝐕-𝐋𝐞𝐮𝐭𝐞 𝐞𝐧𝐭𝐥𝐚𝐫𝐯𝐭"
𝐃𝐚𝐬 𝐬𝐨𝐥𝐥𝐭𝐞 𝐣𝐞𝐝𝐞𝐫 𝐰𝐢𝐬𝐬𝐞𝐧,
𝐝𝐞𝐫 𝐝𝐢𝐞 𝐀𝐟𝐃 𝐟ä𝐥𝐬𝐜𝐡𝐥𝐢𝐜𝐡𝐞𝐫𝐰𝐞𝐢𝐬𝐞 𝐚𝐥𝐬 𝐫𝐞𝐜𝐡𝐭𝐬𝐫𝐚𝐝𝐢𝐤𝐚𝐥 𝐛𝐞𝐳𝐞𝐢𝐜𝐡𝐧𝐞𝐭.
💬Wir werden schon seit Jahren immer mal wieder mit potenziell strafrechtlichen Konsequenzen für diverse VS-Affären medial besänftigt...
➡️𝟐𝟎𝟏𝟔 |
➡️𝟐𝟎𝟏𝟖 |
➡️𝟐𝟎𝟐𝟏
🤔Und wie war das noch gleich mit den NSU Prozess Akten❓
120 Jahre unter Verschluss hatte wohl zu viel Aufsehen erregt, weshalb man diese Verschlusssache auf 30 Jahre reduzierte.🤫
ᴀʟʟᴇꜱ ɢᴇɴᴀɴɴᴛᴇ ꜱɪɴᴅ ɢʀÜɴᴅᴇ ᴡᴀʀᴜᴍ ᴅᴇʀ ᴠᴇʀꜰᴀꜱꜱᴜɴɢꜱꜱᴄʜᴜᴛᴢ ᴋᴇɪɴᴇ ʀᴇᴄʜᴛꜱ-ᴋᴏɴꜱᴇʀᴠᴀᴛɪᴠᴇ ᴘᴀʀᴛᴇɪ ᴀɴ ᴅᴇʀ ᴍᴀᴄʜᴛ ʜᴀʙᴇɴ ᴡɪʟʟ.
📱 𝑊ℯ𐑈𝘁𝗧۷
Roberto #Vannacci sarebbe pronto ad aderire all'Europa delle Nazioni Sovrane, gruppo di estrema destra guidato da #AfD, dopo l'espulsione dai Patrioti di Salvini e Le Pen. Martedì l'annuncio. (ANSA)
@UltimoraPolitics24
В рамках Astana Finance Days 2024 Compliance Hub принял участие в панельной сессии, посвященной вопросам приватности в эпоху активного внедрения искусственного интеллекта.
Рассказали об основных вызовах и рисках, текущем состоянии регулирования искусственного интеллекта в ЕС и Казахстане, а также о плюсах его внедрения, в том числе поделившись итогами недавно проведенного AI Survey.
#afd#afd2024#astanafinancedays