Existe um pacote python chamado python-slugify
, que faz um bom trabalho de slugifying:
pip install python-slugify
Funciona assim:
from slugify import slugify
txt = "This is a test ---"
r = slugify(txt)
self.assertEquals(r, "this-is-a-test")
txt = "This -- is a ## test ---"
r = slugify(txt)
self.assertEquals(r, "this-is-a-test")
txt = 'C\'est déjà l\'été.'
r = slugify(txt)
self.assertEquals(r, "cest-deja-lete")
txt = 'Nín hǎo. Wǒ shì zhōng guó rén'
r = slugify(txt)
self.assertEquals(r, "nin-hao-wo-shi-zhong-guo-ren")
txt = 'Компьютер'
r = slugify(txt)
self.assertEquals(r, "kompiuter")
txt = 'jaja---lol-méméméoo--a'
r = slugify(txt)
self.assertEquals(r, "jaja-lol-mememeoo-a")
Veja mais exemplos
Este pacote faz um pouco mais do que o que você postou (dê uma olhada no código-fonte, é apenas um arquivo). O projeto ainda está ativo (foi atualizado 2 dias antes de eu responder originalmente, mais de sete anos depois (verificado pela última vez em 2020-06-30), ele ainda é atualizado).
cuidado : existe um segundo pacote, chamado slugify
. Se você tiver os dois, poderá ter um problema, pois eles têm o mesmo nome para importação. O que acabou de ser nomeado slugify
não fez tudo o que eu verifiquei rapidamente: "Ich heiße"
tornou - se "ich-heie"
(deveria ser "ich-heisse"
), portanto, certifique-se de escolher o certo ao usar pip
ou easy_install
.