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

Резултати

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

Пребарај: #selfreliance

当前筛选 #selfreliance清除筛选
Red Nile

@rednile12 · Post #10459 · 23.12.2025 г., 16:53

🔺Continuation from above @rednile12 🌍 Key Themes 1️⃣ Impending Crisis & Imperialism The “Black Winter” represents a deliberate destabilization of West Africa—akin to an “Arab Spring” engineered for the region. Traoré warns of wars, terrorism, and economic predation orchestrated by imperial powers: “My conviction, my analysis, is clear: something is happening in West Africa. I have called it the Black Winter. The Black Winter is coming. It will be a very cold winter. A bloody winter. A deadly winter. You will ask me why. Winter will come because war is spreading in West Africa. The imperialists are doing everything they can to plunge the region into fire and bloodshed. We risk killing each other in horrific ways while others stand ready to plunder our resources and impose their will. And those who survive this tragedy will have only two choices: unite definitively against imperialism or remain enslaved until they perish.” 2️⃣ Internal Sabotage & Division Traoré criticizes Africans who undermine collective defense: “By founding the AES Confederation, we anticipated this icy winter. Every day, we search for wood to light a fire—a fire that will warm the hearts, minds, and souls of Africans. We hunt wolves to use their pelts to make coats. We build mountains—solid and powerful mountains—to break the icy winds. But unfortunately, some of our own are determined to sabotage this effort. They are dousing the tree trunks with water to prevent the fire from burning. They transform into wolves so that hunters cannot catch them. They break rocks to prevent the building of mountains. We cannot accept that cowardly heads of state hide behind so-called 'free' media to discourage, insult, and incite hatred among the people. They are vile, spreading hatred daily on social media. Why do we Black people cultivate hatred among ourselves?” 3️⃣ Pan-Africanism & Unity The speech challenges the continent to reflect on its solidarity: “And when winter arrives, those who fought will come seeking refuge. They will want to wear the coats we have made, take shelter behind the mountains we have built, and warm themselves by our fire. So the real question is this: What will become of Pan-Africanism when winter arrives? Why are we unable to see the danger approaching? Why can't we unite to stop it? Let them be certain of one thing: we are united and we will remain so. No manipulation can divide us.” 4️⃣ Self-Reliance & Sovereignty Traoré frames AES institutions—like BCID-AES Bank and AES TV—as proactive defenses against the crisis: “Everything will not be perfect. Everything will not progress at the pace we would like. But we are moving forward—calmly, resolutely—and we will achieve our goal. We pray for protection if winter must come, because through it, we will achieve freedom and unity.” 🗣 Rhetorical Style ▪️Metaphor & Allegory: “Black Winter” for isolation, bloodshed, and death. ▪️Repetition & Urgency: “Winter is coming” evokes inevitability. ▪️Direct Address & Inclusion: “You will ask me why… we” fosters solidarity. ▪️Contrast of Alarm & Hope: Harsh words (“vile,” “miserable”) versus affirmations of unity. Traoré’s style mirrors Thomas Sankara, blending militaristic charisma with Pan-African inspiration. 📌 Context & Impact ▪️Delivered as AES evolved into a full confederation post-ECOWAS withdrawal, the speech reinforces sovereignty amid jihadist threats, sanctions, and Western influence. ▪️Signals defiance and appeals to non-Western partners, while naming internal “saboteurs” risks polarizing some factions. ▪️Positions Traoré as a visionary Pan-African leader, galvanizing anti-imperialist sentiment across the continent. 🔴 Follow @rednile12 for Geopolitical updates #BlackWinter#AESConfederation#PanAfricanUnity#WestAfrica#AntiImperialism#SelfReliance#RedNileMedia#Geopolitics#AfricaRising

Red Nile

@rednile12 · Post #11124 · 01.03.2026 г., 15:25

🇪🇹Adwa at 130: A Victory That Shaped a Continent By: Alexander Yoh. / @rednile12 On March 1, 1896, Ethiopia achieved the impossible—defeating Italy and sending shockwaves through colonial powers. Adwa wasn’t just a battle; it was a statement: Africa can defend its sovereignty. Today, Adwa’s legacy is a blueprint for the future—unity across diversity, strategic independence, and self-reliance. From Menelik II’s brilliant leadership to Ethiopia’s modern projects like the Grand Renaissance Dam, the message is clear: our strength is in standing together and shaping our destiny. 📖 Read the full story here: Adwa’s 130-Year Legacy #የጥቁር_ህዝብ_ኩራት#ዓድዋ_130 #የኢትዮጵያውያን_ድል#Adwa130#EthiopianPride#AfricanUnity#Sovereignty#MenelikII#TaytuBetul#RedNileMedia#AfricanResilience#AdwaLegacy#SelfReliance