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