解析区域字符串语言



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

我在替换语句中遇到错误。

>>> "IR05 měsíční (monthly)".decode('utf8')
u'IR05 mu011bsxedu010dnxed (monthly)'

这是原始字符串的 Unicode 版本(以 UTF8 编码)。

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

>>> 'IR05 mxecsxedxe8nxed (monthly)'.decode('latin2')
u'IR05 mu011bsxedu010dnxed (monthly)'

现在您可以比较两个 Unicode 字符串:

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

若要将字符串写入文件,请再次encode

>>> s = s_utf8.decode('utf8')
>>> filehandle.write(s.encode('utf8'))

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

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

最新更新