以下の内容はhttps://nixeneko.hatenablog.com/entry/2025/10/16/172017より取得しました。


Pythonでロケールを指定してソートする

課題

ソートの順番は言語ごとに異なる。
そのため、様々な言語を扱う際は、言語(=ロケール)を指定してソートをしたい*1

解決手法

PyICUを利用する。これはICU C++ライブラリのPythonラッパーである。

利点

実績のあるUnicodeライブラリであるICUを利用するので、比較的良い結果が得られる。

欠点

インストールが大変で、動作も重い。頻繁に実行する用途には向かないかもしれない。

使い方

インストール方法は次を参照。

コード例

import icu

collator = icu.Collator.createInstance(icu.Locale("si_LK"))
result = sorted(["ලංකාව", "භාෂාව", "ලංකා තේ"], key=collator.getSortKey)
print(result)

結果

['භාෂාව', 'ලංකා තේ', 'ලංකාව']

*1:日本語を読みでソートする場合などは、ロケールを指定しただけでは不可能だが、言語やユースケースによってはロケールを指定したソートで事足りる。




以上の内容はhttps://nixeneko.hatenablog.com/entry/2025/10/16/172017より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14