解析区域字符串语言

时间:2012-04-26 10:14:30

标签: python encoding

我正在使用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("'", "")

我在替换声明中收到错误。

2 个答案:

答案 0 :(得分:4)

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

是原始字符串的unicode版本(以utf8编码)。

现在您可以将它与您解码的其他字符串(来自文件)进行比较(来自utf8或latin2或其他格式),您可以将它们进行比较。

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

现在你可以比较两个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'))

答案 1 :(得分:2)

错误可能是由str(j)引起的, 试试这个:

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