10

在 Python 3 中,假设我有

>>> thai_string = 'สีเ'

使用encode

>>> thai_string.encode('utf-8')
b'\xe0\xb8\xaa\xe0\xb8\xb5'

我的问题:我怎样才能使用而不是encode()返回一个bytes序列?我怎样才能让他们回到 Python 3类型?\u\xdecodestr

我尝试使用ascii内置的,它给出了

>>> ascii(thai_string)
"'\\u0e2a\\u0e35'"

但这似乎不太正确,因为我无法将其解码回thai_string.

Python 文档告诉我

  • \xhh使用十六进制值转义字符hh
  • \uxxxx使用 16 位十六进制值转义字符xxxx

文档说这\u仅用于字符串文字,但我不确定这意味着什么。这是暗示我的问题有一个有缺陷的前提吗?

4

1 回答 1

8

您可以使用unicode_escape

>>> thai_string.encode('unicode_escape')
b'\\u0e2a\\u0e35\\u0e40'

请注意,encode()它将始终返回一个字节字符串(字节),并且unicode_escape编码旨在

在 Python 源代码中生成一个适合作为 Unicode 文字的字符串

于 2015-08-28T22:46:33.557 回答