1

私はpythonを使用してexelの解析に取り組んでいます。
今まで英語で作業してきましたが、地域の言語に遭遇するとエラーが発生します。

例 :

IR05 měsíční (monthly)

それは私にエラーを与えます

UnicodeEncodeError: 'ascii' codec can't encode character u'\u011b' in position 6: ordinal not in range(128)

どうすればそれを解析でき、出力ファイルに同じ言語で書き直すことができますか?

私のコード:

for j in val:
    print 'j is - ', j
    str(j).replace("'", "")

replace ステートメントでエラーが発生します。

4

2 に答える 2

4
>>> "IR05 měsíční (monthly)".decode('utf8')
u'IR05 m\u011bs\xed\u010dn\xed (monthly)'

これは、元の文字列 (utf8 でエンコードされたもの) の Unicode バージョンです。

これで、(ファイルからの) 他の文字列と比較できます。これを (utf8 または latin2 または別の形式から) デコードし、それらを比較できます。

>>> 'IR05 m\xecs\xed\xe8n\xed (monthly)'.decode('latin2')
u'IR05 m\u011bs\xed\u010dn\xed (monthly)'

これで、2 つの Unicode 文字列を比較できます。

>>> s_utf8 = "IR05 měsíční (monthly)"
>>> s_latin2 = 'IR05 m\xecs\xed\xe8n\xed (monthly)'
>>> s_utf8.decode('utf8') == s_latin2.decode('latin2')
True

文字列をファイルに書き込むには、次のようにしますencode

>>> s = s_utf8.decode('utf8')

>>> filehandle.write(s.encode('utf8'))
于 2012-04-26T10:52:28.807 に答える
2

エラーは str(j) が原因である可能性があります。これを試してください:

for j in val:
    print 'j is - ', j
    j.replace("'", "")
于 2012-04-26T10:39:27.207 に答える