Существует пакет python с именем python-slugify
, который довольно хорошо справляется с заменой:
pip install python-slugify
Работает так:
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")
Посмотреть больше примеров
Этот пакет делает немного больше, чем то, что вы опубликовали (взгляните на исходный код, это всего лишь один файл). Проект все еще активен (обновлен за 2 дня до моего первоначального ответа, более семи лет спустя (последний раз проверено 30 июня 2020 г.), он все еще обновляется).
осторожно : есть второй пакет с именем slugify
. Если у вас есть оба из них, вы можете столкнуться с проблемой, поскольку они имеют одинаковое имя для импорта. Тот, что только что назван slugify
, не сделал все, что я проверил: "Ich heiße"
стал "ich-heie"
(должен быть "ich-heisse"
), поэтому обязательно выберите правильный при использовании pip
или easy_install
.