如何使用 \u 转义码对 Python 3 字符串进行编码?
How to encode Python 3 string using \u escape code?
在Python3中,假设我有
>>> thai_string = 'สีเ'
使用encode
得到
>>> thai_string.encode('utf-8')
b'\xe0\xb8\xaa\xe0\xb8\xb5'
我的问题:如何使用 \u
而不是 \x
来获得 encode()
到 return 的 bytes
序列?我怎样才能 decode
将它们恢复为 Python 3 str
类型?
我尝试使用 ascii
内置函数,它给出了
>>> ascii(thai_string)
"'\u0e2a\u0e35'"
但这似乎不太正确,因为我无法对其进行解码以获得 thai_string
。
\xhh
使用十六进制值 hh
转义字符,而
\uxxxx
将字符转义为 16 位十六进制值 xxxx
文档说 \u
仅用于字符串文字,但我不确定那是什么意思。这是否暗示我的问题有一个有缺陷的前提?
您可以使用 unicode_escape
:
>>> thai_string.encode('unicode_escape')
b'\u0e2a\u0e35\u0e40'
注意encode()
总是return一个字节串(bytes)和unicode_escape
编码is intended to:
Produce a string that is suitable as Unicode literal in Python source code
在Python3中,假设我有
>>> thai_string = 'สีเ'
使用encode
得到
>>> thai_string.encode('utf-8')
b'\xe0\xb8\xaa\xe0\xb8\xb5'
我的问题:如何使用 \u
而不是 \x
来获得 encode()
到 return 的 bytes
序列?我怎样才能 decode
将它们恢复为 Python 3 str
类型?
我尝试使用 ascii
内置函数,它给出了
>>> ascii(thai_string)
"'\u0e2a\u0e35'"
但这似乎不太正确,因为我无法对其进行解码以获得 thai_string
。
\xhh
使用十六进制值hh
转义字符,而\uxxxx
将字符转义为 16 位十六进制值xxxx
文档说 \u
仅用于字符串文字,但我不确定那是什么意思。这是否暗示我的问题有一个有缺陷的前提?
您可以使用 unicode_escape
:
>>> thai_string.encode('unicode_escape')
b'\u0e2a\u0e35\u0e40'
注意encode()
总是return一个字节串(bytes)和unicode_escape
编码is intended to:
Produce a string that is suitable as Unicode literal in Python source code