Python2.7:如何将字符串中的unicode转义符转换为实际的utf8字符

2024-09-27 07:17:58 发布

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

我使用Python2.7,从服务器接收到一个字符串(不是unicode!)。 在这个字符串中,我找到了带有unicode转义序列的文本。例如:

<a href = "http://www.mypage.com/\u0441andmoretext">\u00b2<\a>

如何将这些\uxxxx-转换回utf-8?我找到的答案要么是处理&#,要么是需要{},这对我来说太慢了。我需要一个通用的解决方案,任何文本包含这样的顺序。在

编辑:<\a>是一个打字错误,但我也希望能容忍这样的打字错误。只有对\u有反应

示例文本在正确的python语法中的含义如下:

^{pr2}$

所需的输出使用正确的python语法

"<a href = \"http://www.mypage.com/\xd1\x81andmoretext\">\xc2\xb2<\\a>"

Tags: 字符串文本服务器comhttpwww错误unicode
2条回答

试试看

>>> s = "<a href = \"http://www.mypage.com/\\u0441andmoretext\">\\u00b2<\\a>"
>>> s.decode("raw_unicode_escape")
u'<a href = "http://www.mypage.com/\u0441andmoretext">\xb2<\\a>'

然后你可以像往常一样编码成utf8。在

Python确实包含了一些针对这种情况的特殊字符串编解码器。在

在这种情况下,如果32-127范围之外没有其他字符,则可以使用“unicode_escape”编解码器安全地解码字节字符串,以便在Python中有一个正确的unicode文本对象。 (您的程序应该在其上执行所有文本操作)- 每当您再次输出该文本时,您会像往常一样将其转换为utf-8:

rawtext = r"""<a href="http://www.mypage.com/\u0441andmoretext">\u00b2<\a>"""
text = rawtext.decode("unicode_escape")
# Text operations go here
...
output_text = text.encode("utf-8")

如果32-127范围之外还有其他字节,则unicode_转义编解码器 假设它们是拉丁1编码。因此,如果您的响应混合了utf-8和这些\uxxx序列,您必须:

  1. 使用utf-8解码原始字符串
  2. 编码回拉丁1
  3. 使用“unicode_escape”解码
  4. 练习课文
  5. 编码回utf-8

相关问题 更多 >

    热门问题