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 符号?
我相信该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)