假设我有一个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()
答案 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'