在 Python 3 中将 utf-8 unicode 序列转换为 utf-8 字符

Leo*_*ers 1 python unicode utf-8 character-encoding python-3.x

我正在从 aws s3 存储桶读取数据,该存储桶恰好用双反斜杠转义了 unicode 字符。

双反斜杠使 unicode 序列解析为一系列 utf-8 字符,而不是 unicode 表示的字符。

这个例子说明了这种情况。

>>> s1="1+1\\u003d2"
>>> print(s1)
1+1\u003d2
Run Code Online (Sandbox Code Playgroud)

在这种情况下,实际的 unicode 序列将是一个等号。

>>> s2="1+1\u003d2"
>>> print(s2)
1+1=2
Run Code Online (Sandbox Code Playgroud)

有没有办法转换第一个示例中的 utf-8 字符序列,以便将 s1 表示的字符串解析为它的 unicode 序列作为它代表的实际 utf-8 符号?

jua*_*aga 5

我相信该codecs模块提供了这个实用程序:

>>> import codecs
>>> codecs.decode("1+1\\u003d2", encoding='unicode_escape')
'1+1=2'
Run Code Online (Sandbox Code Playgroud)

不过,这可能指向一个更大的问题。这些字符串最初是如何形成的?

请注意,如果这是从有效的 JSON 字符串中提取的(在这种情况下,它将缺少引号),您可以简单地使用:

>>> import json
>>> json.loads('"1+1\\u003d2"')
'1+1=2'
Run Code Online (Sandbox Code Playgroud)