python unicode 获取值/获取文本

python unicode get value / get 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()

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

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

您的 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。