python unicode获取值/获取文本

问题描述 投票:0回答:2

假设我有一个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()
python unicode python-unicode mojibake
2个回答
2
投票

你似乎有很难解码的Unicode;这些是UTF-8字节屏蔽为Latin-1代码点。

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

>>> 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
投票

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

>>> uni_var = u'Na teatr w pi\xc4\x85tek'
>>> uni_var.encode('Latin-1')
'Na teatr w pi\xc4\x85tek'
© www.soinside.com 2019 - 2024. All rights reserved.