Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
Giorgia #Meloni sul #salariominimo: “Mi stupisce che l'opposizione scopra oggi la sua utilità, perché in dieci anni al governo non lo hanno realizzato. Io temo che possa peggiorare la condizione di più lavoratori di quelli ai quali la migliora, ma aspettiamo la proposta del Cnel”
@UltimoraPolitics
Il #CNEL boccia il #salariominimo. Approvato il documento di analisi in Commissione Informazione (No di CGIL e astensione di UIL).
Il 12 ottobre il documento finale sarà trasmesso al Governo.
Le motivazioni:
📌la povertà lavorativa è data dalla quantità di ore di lavoro nella settimana; da quante persone nel nucleo familiare percepiscono un reddito; dall’azione redistributiva dello Stato. Il salario è solo la coda del fenomeno.
📌il tasso di copertura di CCNL supera l’80% chiesto dall’UE, con paghe medie in linea con i 7,10€ chiesti dall’UE (istat 2019).
📌i contratti pirata interessano solo lo 0,4% dei dipendenti privati (tolti agricoltura e colf).
(Repubblica)
@UltimoraPolitics
Ci hanno messo trent'anni per affossare i salari di questo Paese: lo hanno fatto con l'austerità, con il pareggio di bilancio, con trucchetti da prestigiatore di operetta tipo i rapporti deficit/PIL o debito/PIL.
Adesso pensate davvero che gli stessi che vi hanno fregato vogliano salvarvi? Peraltro siete convinti che per cancellare trent'anni di lotta dall'alto verso il basso basti una leggina in Parlamento?
Vi supplico: svegliatevi!
La mia da Stefano Molinari su Radio Radio
#salariominimo#politica#italia#informazione#dibattito#radio#giornalismo
https://youtu.be/M9_hjj4gXYk
Per distruggere il mondo del lavoro ci hanno messo più di trent'anni: ora davvero pensate che si possa risolvere il problema con una leggina sul salario minimo legale?
Ne ho parlato con l'amico Stefano Molinari i microfoni di Radio Radio
#italia#politica#informazione#giornalismo#radio#dibattito#salariominimo
Ieri, ospite di Stefano Bandecchi, ho avuto la possibilità di parlare ancora di lavoro: cosa c'entra il tema della sicurezza e dei morti sul lavoro con quello delle basse retribuzioni?
C'entra, c'entra eccome.
Abbiamo anche presentato il mio nuovo libro, "Il salario minimo non vi salverà", Fazi Editore.
Cusano Italia TV
#mortisullavoro#lavoro#diritti#salariominimo
https://www.youtube.com/watch?v=jS4DjeviQ9I&ab_channel=SavinoBalzano
Che desolazione: Sandro Ruotolo si affanna per raggiungere Romano Prodi e ottenere sostegno alla campagna sul salario minimo.
Praticamente come chiedere a un piromane di spegnere l'incendio, al gatto di proteggere il topo, al lupo di salvare Cappuccetto Rosso.
La mia ai microfoni di Stefano Molinari di Radio Radio
#Prodi#salariominimo#politica#informazione#radio#dibattito#giornalismo
https://youtu.be/TQK--EP9Yas
Oggi ospite della bravissima Manuela Donghi e di Giornale Radio: abbiamo parlato del mio "Il salario minimo non vi salverà", Fazi Editore.
Nella chiacchierata è emerso un aspetto che credo sia opportuno sottolineare ancora. Chi invoca in Italia il salario minimo legale, lo fa citando la nota direttiva dell'Unione Europea in materia: è evidente però che quella direttiva non l'ha letta nemmeno di sfuggita. Ascoltate e capirete perché!
#salariominimo#SalarioMinimoSubito#salariominimo2024
https://www.youtube.com/watch?v=CvkHS1hlNRs&ab_channel=SavinoBalzano
Nella mia chiacchierata con Stefano Molinari di Radio Radio, temo di aver spoilerato l'argomento del mio prossimo libro per Fazi Editore...
Occhio ragazzi, occhio davvero perché rischiamo grosso...
#salariominimo#italia#politica#lavoro#radio#giornalismo#diritti#dibattito
https://x.com/SavinoBalzano/status/1845751238287086006?t=r-so7mOwL-wquBQoFks6aQ&s=19
Dura solo 30 secondi, ma vi prego di ascoltare con attenzione: perché, domanda #Formigli, i salari in #Italia crescono molto meno che nel resto d'#Europa?
(Per la verità i nostri non crescono proprio: anzi, il potere d'acquisto si riduce).
Sublime, per davvero, è la risposta di #Cottarelli che si incazza: «i salari non aumentano perchè la torta non è cresciuta negli ultimi 25 anni, ecco perché!».
Ma come? Non era perché manca una legge sul #SalarioMinimo? E, soprattutto, che diavolo è successo negli ultimi 25 anni da comportare l'impossibilità di crescita per la torta? Qualche indizio? ;)
Mi piace che ogni tanto si lasciano andare e ti dicono le cose come stanno: la verità è che siamo messi così male che con una legge sul salario minimo non servirebbe praticamente a nulla. Sarebbe come somministrare del paracetamolo al tizio che si è rotto il braccio.
Spiace per la #sinistrucola che spera, tra una cantata e l'altra, tra una ballata e l'altra, di riconquistare i lavoratori con questa buffonata: le chiacchiere stanno a zero.
Una bella chiacchierata con Gianni Dragoni per Servizio Pubblico di Michele Santoro.
Abbiamo presentato il mio nuovo libro, "Il salario minimo non vi salverà", Fazi Editore.
#salariominimo#lavoro#diritti#santoro#MicheleSantoro
https://www.youtube.com/watch?v=teeMa6zA8KM&ab_channel=SavinoBalzano
Ieri, ospite di Francesco Borgonovo, del suo 1984 e di Byoblu, abbiamo parlato di lavoro, del mio nuovo libro "Il salario minimo non vi salverà" (Fazi Editore) e di diritti sociali.
Perché la politica non si occupa più di diritti sociali?
Per il semplice motivo che significherebbe mettere mani alla borsa e distribuire risorse dall'alto verso il basso: questo non interessa a nessuno, ancor meno alle forze politiche c.d. progressiste.
In tal senso si colloca la battaglia per i diritti civili, importante ma strumentalizzata, nuovo oppio dei popoli.
#diritticivili#dirittisociali#diritti#lavoro#salariominimo
https://www.youtube.com/watch?v=CjfZlj5p5eg&ab_channel=SavinoBalzano