私は文字列を「スラッグ化」する最良の方法を探しています「ナメクジ」とは何かそして私の現在の解決策はこのレシピ
少し変更して次のようになりました:
s = 'String to slugify'
slug = unicodedata.normalize('NFKD', s)
slug = slug.encode('ascii', 'ignore').lower()
slug = re.sub(r'[^a-z0-9]+', '-', slug).strip('-')
slug = re.sub(r'[-]+', '-', slug)
このコードに何か問題があるとお思いの方はいらっしゃいますか? 問題なく動作していますが、何か見落としているのでしょうか、それとももっと良い方法をご存知でしょうか?
ベストアンサー1
という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")
見るその他の例
このパッケージは、あなたが投稿したものよりも少し多くのことを行います (ソースを見てください。それは 1 つのファイルだけです)。プロジェクトはまだアクティブです (私が最初に回答した 2 日前に更新され、9 年以上経った後 (最終確認日 2022-03-30)、まだ更新されています)。
注意深い: 2 つ目のパッケージ がありますslugify
。 両方ある場合、インポート名が同じなので、問題が発生する可能性があります。 先ほど指定したパッケージは、slugify
私が簡単に確認したところ、 がすべて実行されませんでした。"Ich heiße"
になりました"ich-heie"
( のはずです)。そのため、または を"ich-heisse"
使用する場合は、必ず正しいパッケージを選択してください。pip
easy_install