@cecmoldova · Post #2698 · 21.01.2025 г., 14:05
🗳În satul Talmaza, raionul Ștefan Vodă, vor avea loc alegeri locale noi pentru funcția de primar. Detalii aici. #CECMoldova#DemocrațiaContează#ALN#18mai2025
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
Пребарај: #aln
@cecmoldova · Post #2698 · 21.01.2025 г., 14:05
🗳În satul Talmaza, raionul Ștefan Vodă, vor avea loc alegeri locale noi pentru funcția de primar. Detalii aici. #CECMoldova#DemocrațiaContează#ALN#18mai2025
@cecmoldova · Post #3047 · 20.07.2025 г., 19:32
‼️𝐂𝐄𝐂 𝐩𝐫𝐞𝐳𝐢𝐧𝐭ă 𝐫𝐞𝐳𝐮𝐥𝐭𝐚𝐭𝐞𝐥𝐞 𝐩𝐫𝐞𝐥𝐢𝐦𝐢𝐧𝐚𝐫𝐞 î𝐧 𝐜𝐨𝐦𝐮𝐧𝐚 𝐁𝐨𝐥𝐝𝐮𝐫𝐞ș𝐭𝐢, 𝐫𝐚𝐢𝐨𝐧𝐮𝐥 𝐍𝐢𝐬𝐩𝐨𝐫𝐞𝐧𝐢, 𝐮𝐧𝐝𝐞 𝐚𝐬𝐭ă𝐳𝐢 𝐚 𝐚𝐯𝐮𝐭 𝐥𝐨𝐜 𝐯𝐨𝐭𝐚𝐫𝐞𝐚 𝐫𝐞𝐩𝐞𝐭𝐚𝐭ă 𝐚 𝐭𝐮𝐫𝐮𝐥𝐮𝐢 𝐈𝐈 𝐚𝐥 𝐚𝐥𝐞𝐠𝐞𝐫𝐢𝐥𝐨𝐫 𝐥𝐨𝐜𝐚𝐥𝐞 𝐧𝐨𝐢 #CECMoldova#DemocrațiaContează#VotareaRepetată#ALN
@cecmoldova · Post #3046 · 20.07.2025 г., 18:09
‼️𝐏𝐫𝐨𝐜𝐞𝐬𝐮𝐥 𝐝𝐞 𝐯𝐨𝐭𝐚𝐫𝐞 î𝐧 𝐜𝐨𝐦𝐮𝐧𝐚 𝐁𝐨𝐥𝐝𝐮𝐫𝐞ș𝐭𝐢, 𝐫𝐚𝐢𝐨𝐧𝐮𝐥 𝐍𝐢𝐬𝐩𝐨𝐫𝐞𝐧𝐢 𝐬-𝐚 î𝐧𝐜𝐡𝐞𝐢𝐚𝐭 #CECMoldova#DemocrațiaContează#VotareaRepetată#ALN
@cecmoldova · Post #3045 · 20.07.2025 г., 14:58
‼️𝟓𝟕𝟕 𝐝𝐞 𝐚𝐥𝐞𝐠ă𝐭𝐨𝐫𝐢 𝐚𝐮 𝐯𝐨𝐭𝐚𝐭 𝐩â𝐧ă 𝐥𝐚 𝐨𝐫𝐚 𝟏𝟖:𝟎𝟎 î𝐧 𝐜𝐨𝐦𝐮𝐧𝐚 𝐁𝐨𝐥𝐝𝐮𝐫𝐞ș𝐭𝐢, 𝐫𝐚𝐢𝐨𝐧𝐮𝐥 𝐍𝐢𝐬𝐩𝐨𝐫𝐞𝐧𝐢 #CECMoldova#DemocrațiaContează#VotareaRepetată#ALN
@cecmoldova · Post #3037 · 20.07.2025 г., 11:59
‼️𝟏𝟒,𝟖𝟒% 𝐝𝐢𝐧 𝐚𝐥𝐞𝐠ă𝐭𝐨𝐫𝐢 𝐬-𝐚𝐮 𝐩𝐫𝐞𝐳𝐞𝐧𝐭𝐚𝐭 𝐥𝐚 𝐮𝐫𝐧𝐞𝐥𝐞 𝐝𝐞 𝐯𝐨𝐭 #CECMoldova#DemocrațiaContează#VotareaRepetată#ALN
@cecmoldova · Post #3036 · 20.07.2025 г., 08:59
‼️ 𝐏𝐞𝐬𝐭𝐞 𝟐𝟓𝟎 𝐝𝐞 𝐚𝐥𝐞𝐠ă𝐭𝐨𝐫𝐢 𝐚𝐮 𝐯𝐨𝐭𝐚𝐭 𝐩â𝐧ă 𝐥𝐚 𝐨𝐫𝐚 𝟏𝟐:𝟎𝟎 #CECMoldova#DemocrațiaContează#VotareaRepetată#ALN
@cecmoldova · Post #3035 · 20.07.2025 г., 06:24
‼️Î𝐧 𝐜𝐨𝐦𝐮𝐧𝐚 𝐁𝐨𝐥𝐝𝐮𝐫𝐞ș𝐭𝐢, 𝐫𝐚𝐢𝐨𝐧𝐮𝐥 𝐍𝐢𝐬𝐩𝐨𝐫𝐞𝐧𝐢, 𝐚𝐫𝐞 𝐥𝐨𝐜 𝐯𝐨𝐭𝐚𝐫𝐞𝐚 𝐫𝐞𝐩𝐞𝐭𝐚𝐭ă 𝐚 𝐭𝐮𝐫𝐮𝐥𝐮𝐢 𝐈𝐈 𝐝𝐢𝐧 𝐜𝐚𝐝𝐫𝐮𝐥 𝐚𝐥𝐞𝐠𝐞𝐫𝐢𝐥𝐨𝐫 𝐥𝐨𝐜𝐚𝐥𝐞 𝐧𝐨𝐢 𝐩𝐞𝐧𝐭𝐫𝐮 𝐟𝐮𝐧𝐜ț𝐢𝐚 𝐝𝐞 𝐩𝐫𝐢𝐦𝐚𝐫 #CECMoldova#DemocrațiaContează#VotareaRepetată#ALN
@cecmoldova · Post #2887 · 26.05.2025 г., 15:04
📌𝐂𝐄𝐂 𝐚 𝐥𝐮𝐚𝐭 𝐚𝐜𝐭 𝐝𝐞 𝐢𝐧𝐟𝐨𝐫𝐦𝐚ț𝐢𝐢𝐥𝐞 𝐝𝐢𝐧 𝐫𝐚𝐩𝐨𝐚𝐫𝐭𝐞𝐥𝐞 𝐩𝐫𝐢𝐯𝐢𝐧𝐝 𝐟𝐢𝐧𝐚𝐧ț𝐚𝐫𝐞𝐚 𝐜𝐚𝐦𝐩𝐚𝐧𝐢𝐞𝐢 𝐞𝐥𝐞𝐜𝐭𝐨𝐫𝐚𝐥𝐞 î𝐧 𝐜𝐚𝐝𝐫𝐮𝐥 𝐚𝐥𝐞𝐠𝐞𝐫𝐢𝐥𝐨𝐫 𝐥𝐨𝐜𝐚𝐥𝐞 𝐧𝐨𝐢 𝐝𝐢𝐧 𝟏𝟖 𝐦𝐚𝐢 𝟐𝟎𝟐𝟓 #CECMoldova#DemocrațiaContează#AlegeriLocaleNoi#18Mai2025#ALN
@cecmoldova · Post #2872 · 19.05.2025 г., 13:16
📌𝐂𝐄𝐂 𝐚 𝐥𝐮𝐚𝐭 𝐚𝐜𝐭 𝐝𝐞 𝐢𝐧𝐟𝐨𝐫𝐦𝐚ț𝐢𝐢𝐥𝐞 𝐝𝐢𝐧 𝐫𝐚𝐩𝐨𝐚𝐫𝐭𝐞𝐥𝐞 𝐩𝐫𝐢𝐯𝐢𝐧𝐝 𝐟𝐢𝐧𝐚𝐧ț𝐚𝐫𝐞𝐚 𝐜𝐚𝐦𝐩𝐚𝐧𝐢𝐞𝐢 𝐞𝐥𝐞𝐜𝐭𝐨𝐫𝐚𝐥𝐞 𝐥𝐚 𝐚𝐥𝐞𝐠𝐞𝐫𝐢𝐥𝐞 𝐥𝐨𝐜𝐚𝐥𝐞 𝐧𝐨𝐢 𝐝𝐢𝐧 𝟏𝟖 𝐦𝐚𝐢 𝟐𝟎𝟐𝟓 #CECMoldova#DemocrațiaContează#AlegeriLocaleNoi#18Mai2025#ALN
@cecmoldova · Post #2871 · 18.05.2025 г., 20:01
‼️CEC prezintă primele rezultate preliminare ale alegerilor locale noi de astăzi 🔵https://a.cec.md/ro/cec-prezinta-primele-rezultate-preliminare-ale-alegerilor-locale-noi-2781_112815.html 🔵https://a.cec.md/ro/rezultatele-preliminare-ale-alegerilor-locale-noi-din-localitatile-tabani-2781_112816.html #CECMoldova#DemocrațiaContează#AlegeriLocaleNoi#18Mai2025#ALN
@cecmoldova · Post #2870 · 18.05.2025 г., 18:20
📣Comisia Electorală Centrală informează că la închiderea celor 13 secții de votare în localitățile unde au avut loc alegeri locale noi, dreptul la vot a fost exercitat, în total, de către 6687 alegători sau 39,71%. ‼️În următoarele ore, CEC va recepționa procesele verbale de totalizare a rezultatelor alegerilor. Atragem atenția că toată informația oferită până la recepționarea documentelor în original de la organele electorale inferioare poartă un caracter preliminar. #CECMoldova#DemocrațiaContează#AlegeriLocaleNoi#18Mai2025#ALN
@cecmoldova · Post #2869 · 18.05.2025 г., 15:08
‼️Comisia Electorală Centrală informează că în cele 6 localități, până la ora 18:00, dreptul la vot a fost exercitat, în total, de către 6058 de alegători, ceea ce reprezintă o rată de 36% la sută din numărul celor incluși pe listele electorale. 🗳Procesul de vot decurge fără incidente. #CECMoldova#DemocrațiaContează#AlegeriLocaleNoi#18Mai2025#ALN