将UTF-8的八进制表示转换

3
我有一个变量,内容如下:
>>> s = '\\320\\227\\320\\264\\320\\260\\320\\275\\320\\270\\320\\265 \\320\\261\\321\\213\\320\\262\\321\\210\\320\\265\\320\\271'
>>> print(s)
\320\227\320\264\320\260\320\275\320\270\320\265 \320\261\321\213\320\262\321\210\320\265\320\271

这段内容包含了字符串 "Зданиебывшей" 的UTF-8编码的八进制转义表示(八进制320 227 = 十六进制D0 97 = UTF-8对应"З")。如何将此字符串解码为 "Зданиебывшей"?

我的问题不同.. @deceze.. 我无法写 b'\320\227\320\264\320\260\320\275\320\270\320\265 \320\261\321\213\320\262\321\210\320\265\320\271' 因为我动态地将八进制值作为字符串对象获取 - undefined
它实际上代表八进制的“Зданиебывшей”。您可以在此处检查:http://www.unit-conversion.info/texttools/octal/ - undefined
我猜我在解释中已经说明了'hello'的值是一个字符串对象。 - undefined
抱歉我之前没有正确解释问题。现在我觉得已经清楚了。@deceze,请你能否删除重复标记,因为这个问题并不是重复的? - undefined
太酷了,明白了。谢谢Matt和Deceze。 - undefined
显示剩余16条评论
1个回答

5

这有点像是一个技巧性的解决方案。

s = '\\320\\227\\320\\264\\320\\260\\320\\275\\320\\270\\320\\265 \\320\\261\\321\\213\\320\\262\\321\\210\\320\\265\\320\\271'

b = bytes([int(i, 8) for i in s.split("\\")[1:]])

print(b.decode("utf8"))

产出:Зданиебывшей

或使用codecs模块。

b2 = codecs.escape_decode(s)[0]
print(b2.decode("utf8"))

这将产生相同的结果。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接