假设我有一个 unicode 变量:
uni_var = u'Na teatr w pi\xc4\x85tek'
我想要一个字符串,它与 相同uni_var
,只是没有“u”,所以:
str_var = 'Na teatr w pi\xc4\x85tek'
我该怎么做?我想找到类似的东西:
str_var = uni_var.text()
假设我有一个 unicode 变量:
uni_var = u'Na teatr w pi\xc4\x85tek'
我想要一个字符串,它与 相同uni_var
,只是没有“u”,所以:
str_var = 'Na teatr w pi\xc4\x85tek'
我该怎么做?我想找到类似的东西:
str_var = uni_var.text()
您似乎对 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
库来检测如何最好地修复它;它产生 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。
您需要将字符串编码为Latin-1
>>> uni_var = u'Na teatr w pi\xc4\x85tek'
>>> uni_var.encode('Latin-1')
'Na teatr w pi\xc4\x85tek'