转换 UTF-8 的八进制表示形式

Dha*_*o R 3 python encoding decoding

我有一个这样的变量:

\n\n
>>> 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\'\n>>> print(s)\n\\320\\227\\320\\264\\320\\260\\320\\275\\320\\270\\320\\265 \\320\\261\\321\\213\\320\\262\\321\\210\\320\\265\\320\\271\n
Run Code Online (Sandbox Code Playgroud)\n\n

这包含字符串“\xd0\x97\xd0\xb4\xd0\xb0\xd0\xbd\xd0\xb8\xd0\xb5\xd0\xb1\xd1\x8b\xd0”的UTF-8编码的八进制转义表示\xb2\xd1\x88\xd0\xb5\xd0\xb9"(八进制320 227=十六进制D0 97= UTF-8 表示“\xd0\x97”)。如何将此字符串解码为“\xd0\x97\xd0\xb4\xd0\xb0\xd0\xbd\xd0\xb8\xd0\xb5\xd0\xb1\xd1\x8b\xd0\xb2\xd1\x88\xd0 \xb5\xd0\xb9"?

\n

mat*_*att 5

这有点像黑客。

\n\n
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\'\n\nb = bytes([int(i, 8) for i in s.split("\\\\")[1:]])\n\nprint(b.decode("utf8"))\n
Run Code Online (Sandbox Code Playgroud)\n\n

产量:\xd0\x97\xd0\xb4\xd0\xb0\xd0\xbd\xd0\xb8\xd0\xb5\xd0\xb1\xd1\x8b\xd0\xb2\xd1\x88\xd0\xb5\xd0\xb9

\n\n

或者使用该codecs模块。

\n\n
b2 = codecs.escape_decode(s)[0]\nprint(b2.decode("utf8"))\n
Run Code Online (Sandbox Code Playgroud)\n\n

这会产生相同的结果。

\n