2011-01-20 8 views
4

私はUTF-8でエンコードされたXMLファイルを読み込んで、それを操作してGoogleのDatastoreに保存するPythonスクリプトに取り組んでいます(App Engineプログラム)。非ASCII文字でPythonでファイルI/Oを実行する

私がファイルを読み込んで解析する方法は、file.readline()といくつかの正規表現だけです。唯一の問題は、私が扱っているファイルには、さまざまな言語の文字が含まれていることです。たとえば、éまたはÅまたはロシア語またはギリシア語の文字がある可能性があります。

"UnicodeDecodeError: 'ascii'コーデックは0バイト目の0xd0バイトをデコードできません:序数は範囲(128)にありません。"私は、その後、エラーを取り除くが、出力された文字は右に表示されていない "ISO - 8859 - 15"に開いているファイルのエンコーディングを切り替えてみました。

私の質問は、ファイル内のすべての特殊文字にPythonが詰まることなく、PythonでUTF-8でエンコードされたファイルを操作する方法ですか?私はこれが十分にはっきりしていることを願っており、事前にアドバイスをお願いします。

+0

パターンや文字列をユニコード文字列で検索していますか? – nmichaels

+0

はい - 私は正規表現で特殊文字を検索しません。良い例としては – dshipper

答えて

4

可能性がチェスの駒ことになってstr.decode

>>> print '\xe2\x99\x9e'.decode('utf-8') 
♞ 

上のUTF-8エンコーディングを指定しますが、それはeffbotに答えにして参照して、あなたを展開するには:)

+0

+1です。私はそれらのユニコードのチェスの部分が大好きです。 – Blender

+0

@ニックあなたは何でもいいのですか?) – Blender

+0

@Blender Me?私は何かを言いましたか? –

0

を見るには余りにも小さなです

raw = file.readline() 
proc = raw.decode('utf-8') 
1

ファイルで使用するエンコーディングをISO-8859-1に変更したとします。 UTF-8に変更しようとしましたか?

関連する問題