Pythonでの文字列スラッグ化 質問する

Pythonでの文字列スラッグ化 質問する

私は文字列を「スラッグ化」する最良の方法を探しています「ナメクジ」とは何かそして私の現在の解決策はこのレシピ

少し変更して次のようになりました:

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"使用する場合は、必ず正しいパッケージを選択してください。pipeasy_install

おすすめ記事