转换 UTF-8 的八进制表示

Convert octal representation of UTF-8

我有一个这样的变量:

>>> 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)
070400050005 011302100501

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

这有点骇人听闻。

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"))

这会产生相同的结果。