python unicode获取值/获取文本

时间:2015-02-13 10:47:19

标签: python unicode python-unicode mojibake

假设我有一个unicode变量:

uni_var = u'Na teatr w pi\xc4\x85tek'

我想要一个字符串,它与uni_var相同,只是没有“你”,所以:

str_var = 'Na teatr w pi\xc4\x85tek'

我该怎么办?我想找到类似的东西:

str_var = uni_var.text()

2 个答案:

答案 0 :(得分:2)

您似乎解码了Unicode;这些是UTF-8字节屏蔽为Latin-1代码点。

您可以通过编码到一对一地将Unicode代码点映射到字节的编解码器来回到正确的UTF-8字节,例如Latin-1:

>>> uni_var = u'Na teatr w pi\xc4\x85tek'
>>> uni_var.encode('latin1')
'Na teatr w pi\xc4\x85tek'

但要小心;也可能是CP1252编码在这里用于解码为Unicode。这完全取决于Mojibake产生的位置。

您还可以使用ftfy library来检测如何最好地修复此问题;它产生Unicode输出:

>>> import ftfy
>>> uni_var = u'Na teatr w pi\xc4\x85tek'
>>> ftfy.fix_text(uni_var)
u'Na teatr w pi\u0105tek'
>>> print ftfy.fix_text(uni_var)
Na teatr w piątek

图书馆将自动处理CP1252 Mojibake。

答案 1 :(得分:1)

您需要将字符串编码为Latin-1

>>> uni_var = u'Na teatr w pi\xc4\x85tek'
>>> uni_var.encode('Latin-1')
'Na teatr w pi\xc4\x85tek'