Python
でUnicode文字列からアクセントを取り除く方法は、主にunicodedata
モジュールを使って正規化を行い、Unicodeカテゴリをチェックする方法が一般的です。unicodedata.normalize('NFD', string)
で文字列を正規化し、UnicodeカテゴリがMn
(非間隔記号)である文字を除去することができます。
unicodedata
を使った例
import unicodedata
def remove_accents(input_str):
normalized_str = unicodedata.normalize('NFD', input_str)
return ''.join(c for c in normalized_str if unicodedata.category(c) != 'Mn')
この方法では、元の文字を正規化して分解し、アクセントのないベースとなる文字だけを残します。
unidecode
を使った方法
unidecode
ライブラリは、Unicode文字列を最も近いASCII表現に変換するために使用されます。これにより、フランス語やスペイン語などのアクセント付き文字が削除されます。
from unidecode import unidecode
print(unidecode('François'))
このコードはFrançois
をFrancois
に変換します。
まとめ
アクセントの削除は、Python
標準ライブラリunicodedata
を使用して行う方法や、unidecode
ライブラリで簡単に行うことができます。どちらの方法も用途に応じて使い分けられ、特に正規化が必要な場合にはunicodedata
が便利です。