22

こんにちは私は、 ->u"ıöüç"などの英語に正規化したい場合など、特殊文字を含む外部ソースからテキストベースのutf8データを取得します。これを達成するための最良の方法は何でしょうか?"ıöüç""iouc"

4

4 に答える 4

43

Unidecodeモジュールの使用をお勧めします:

>>> from unidecode import unidecode
>>> unidecode(u'ıöüç')
'iouc'

ユニコード文字列をフィードし、バイト文字列を出力する方法に注意してください。出力はASCIIであることが保証されています。

于 2010-11-12T08:10:23.090 に答える
6

それはすべて、結果を音訳する際にどこまで行きたいかによって異なります。すべてをASCII(αβγからabg)に変換したい場合unidecodeは、それが最適な方法です。

アクセント付き文字からアクセントを削除したいだけの場合は、正規化形式NFKD(アクセント付き文字áをプレーン文字のa後に)を使用して文字列を分解してから、アクセント( Unicode文字クラスU+0301 COMBINING ACUTE ACCENTに属する)を破棄してみてください。マーク、非スペーシング」)。 Mn

import unicodedata

def remove_nonspacing_marks(s):
    "Decompose the unicode string s and remove non-spacing marks."
    return ''.join(c for c in unicodedata.normalize('NFKD', s)
                   if unicodedata.category(c) != 'Mn')
于 2010-11-12T11:41:27.800 に答える
2

私が見つけた最も簡単な方法:

unicodedata.normalize('NFKD', s).encode("ascii", "ignore")

于 2017-04-12T20:54:04.683 に答える
0
import unicodedata
unicodedata.normalize()

http://docs.python.org/library/unicodedata.html

于 2010-11-12T08:05:52.973 に答える