解码转换为unicode的“raw”字符串

2024-09-28 22:34:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有获取一些数据并通过lxml解析的脚本。在

最初它有lxml.etree._ElementUnicodeResult类型,但我们可以很容易地将其转换为unicode。在

有一些危险的时刻。 此unicode字符串包含字符串的原始字节。尽管它的类型是unicode,但它保留了通常pythonstr的原始字节。在

label
Out[53]: u'\xd0\x92\xd0\xbb\xd0\xb0\xd0\xb4\xd0\xb8\xd0\xbc\xd0\xb8\xd1\x80'

{{cd2>实际上是把

我可以轻松地将其复制粘贴到交互式控制台,并将其实际转换为unicode点:

^{pr2}$

Tags: 数据字符串脚本类型字节unicodeoutlxml
3条回答

使用“拉丁-1”编码对字符串进行编码,它直接将256个字符U+0000到U+00FF映射到单个字节。在

>>> s = u'\xd0\x92\xd0\xbb\xd0\xb0\xd0\xb4\xd0\xb8\xd0\xbc\xd0\xb8\xd1\x80'
>>> s.encode('latin-1')
b'\xd0\x92\xd0\xbb\xd0\xb0\xd0\xb4\xd0\xb8\xd0\xbc\xd0\xb8\xd1\x80'

您的Unicode编码解码错误。它看起来像latin1。你可以用同样错误的编解码器重新编码,然后用正确的编解码器解码。在

s = u'\xd0\x92\xd0\xbb\xd0\xb0\xd0\xb4\xd0\xb8\xd0\xbc\xd0\xb8\xd1\x80'
print(s.encode('latin1').decode('utf8'))

输出:

^{pr2}$

更好的是,首先要正确解码;^)

这有帮助吗?在

str1 = repr(u'\xd0\x92\xd0\xbb\xd0\xb0\xd0\xb4\xd0\xb8\xd0\xbc\xd0\xb8\xd1\x80')
print type(str1)
print str1
# or
print str1[1:]

相关问题 更多 >