Python-Slugify: SEOに強いUnicodeスラッグを生成
Python-Slugify: クリーンでSEOに強いスラッグを作る決定版ツール
ウェブ開発やデータ管理において、人が読めるテキストをURLに適した文字列(「スラッグ」と呼びます)に変換することは日常茶飯事です。ブログ記事のURL、画像ファイル名、データベースのユニークな識別子など、スラッグはユーザビリティと検索エンジン最適化(SEO)の両方で極めて重要な役割を担っています。
そこで登場するのが、この変換を非常に洗練された方法で、特にユニコード文字の複雑さに対処しながら処理するために設計された、強力で高度に設定可能なPythonライブラリ、python-slugifyです。
スラッグとは?
スラッグとは、URLの一部で、人が読めるキーワード形式で特定のページを識別するものです。例えば、yourwebsite.com/blog/my-awesome-post-title
というURLでは、my-awesome-post-title
がスラッグになります。
なぜpython-slugifyなのか?
このライブラリは、ユニコード文字列の堅牢な処理が際立っており、これはシンプルなスラッグ化ツールでは見過ごされがちな特徴です。様々な言語の文字をインテリジェントにASCII文字に変換し、スラッグが普遍的に互換性があり、意味を持つものになるようにします。
主な特徴:
- ユニコード対応: 国際文字(例: 'C\'est déjà l\'été.' は 'c-est-deja-l-ete' に、'影師嗎' は 'ying-shi-ma' に)をシームレスに変換します。
- カスタマイズ可能なオプション: 出力を制御するための幅広いパラメータを提供します。
entities
,decimal
,hexadecimal
: HTMLエンティティを処理します。max_length
,word_boundary
,save_order
: スラッグの長さと単語の整合性を制御します。separator
: 単語を区切る文字を定義します(デフォルトはハイフン-
)。stopwords
: 'the', 'in', 'a' などの一般的な単語を削除し、スラッグを簡潔に保ちます。regex_pattern
: 高度な文字フィルタリングにカスタム正規表現を適用します。lowercase
: 大文字・小文字を元のままにするオプションです。replacements
: カスタムの文字または文字列置換を定義します(例:[['|', 'or']]
)。allow_unicode
: 必要であれば元のユニコード文字を保持します。
- 簡単なインストール: pip経由で利用でき、Pythonプロジェクトへの組み込みが簡単です。
pip install python-slugify # または、代替のunidecodeパッケージを使用する場合 pip install python-slugify[unidecode]
- コマンドラインツール: 便利な
slugify
コマンドラインユーティリティが付属しており、ターミナルから直接素早く変換できます。echo "Taking input from STDIN" | slugify --stdin # 出力: taking-input-from-stdin slugify taking input from the command line # 出力: taking-input-from-the-command-line
使い方:
python-slugify
の使い方は直感的です。slugify
関数をインポートし、テキストを渡すだけです。
from slugify import slugify
# 基本的な使い方
txt = "This is a test ---"
r = slugify(txt)
print(r) # 出力: this-is-a-test
# 英語以外の文字の処理
txt = 'Компьютер'
r = slugify(txt)
print(r) # 出力: kompiuter
# max_length と word_boundary を使用
txt = 'jaja---lol-méméméoo--a'
r = slugify(txt, max_length=15, word_boundary=True)
print(r) # 出力: jaja-lol-a
# ストップワードの削除
txt = 'the quick brown fox jumps over the lazy dog'
r = slugify(txt, stopwords=['the'])
print(r) # 出力: quick-brown-fox-jumps-over-lazy-dog
# カスタム置換
txt = '10 | 20 %'
r = slugify(txt, replacements=[['|', 'or'], ['%', 'percent']])
print(r) # 出力: 10-or-20-percent
ライセンスと依存関係
python-slugify
はMITライセンスでリリースされており、商用・個人利用ともに無料です。デフォルトではデコードにtext-unidecode
を使用しており、これはGPLおよびPerl Artisticライセンスです。オプションで、代替のUnidecode
(GPL)パッケージをインストールできます。
貢献
このプロジェクトは貢献を歓迎しています。プルリクエストを送信する前に、開発者の方はコントリビューションガイドラインをご一読ください。
GitHubで1.5K以上のスターと110のフォークを持つpython-slugify
は、ウェブコンテンツ管理の重要な側面を簡素化する、よくメンテナンスされ、広く使われているツールです。その柔軟性と包括的な機能セットは、Python開発者のツールキットにとって不可欠な追加要素となるでしょう。