web-dev-qa-db-ja.com

python)でUnicode文字列をASCII文字列に近似的に変換する

これが些細なことかどうかはわかりませんが、Unicode文字列をASCII文字列に変換する必要があり、これらすべてのエスケープ文字を使用したくありません。つまり、非常によく似たASCII文字に「おおよその」変換を行うことは可能ですか?

例:Gavin O’ConnorはGavin O\x92Connorに変換されますが、Gavin O’Connorに変換するだけでよいのですが。これは可能ですか?誰かがそれを行うためにいくつかのutilを書いたのですか、それともすべての文字を手動で置き換える必要がありますか?

どうもありがとうございました!マルコ

24

nidecode パッケージを使用して、文字列を音訳します。

>>> import unidecode
>>> unidecode.unidecode(u'Gavin O’Connor')
"Gavin O'Connor"
29
Petr Viktorin
b = str(a.encode('utf-8').decode('ascii', 'ignore'))

正常に動作するはずです。

8
D K
import unicodedata

unicode_string = u"Gavin O’Connor"
print unicodedata.normalize('NFKD', unicode_string).encode('ascii','ignore')

出力:

ギャヴィン・オコナー

正規化フォームについて説明しているドキュメントは次のとおりです。 http://unicode.org/reports/tr15/

5
Acorn

文字からアクセントを取り除くテクニックがありますが、他の文字は直接置き換える必要があります。この記事を確認してください: http://effbot.org/zone/unicode-convert.htm

1
Mark Tolonen

簡単な文字置換を試してください

str1 = "“I am the greatest”, said Gavin O’Connor"
print(str1)
print(str1.replace("’", "'").replace("“","\"").replace("”","\""))

PS: error を取得した場合は、# -*- coding: utf-8 -*-ファイルの先頭に.pyを追加してください

0
Ritwik