Skip to main content
 首页 » 编程设计

python之使用 str() 将字节转换为字符串返回带有语音标记的字符串

2025年05月04日26zfyouxi

假设我有一个包含字节的变量:

>>> a = b'Hello World' 

可以通过以下方式验证:

>>> type(a) 
<class 'bytes'> 

现在我尝试使用 str() 将 a 转换为字符串:

>>> b = str(a) 

果然是一个字符串:

>>> type(b) 
<class 'str'> 

现在我尝试打印 b 但我得到了一个完全出乎意料的结果:

>>> print(b) 
b'Hello World' 

它返回一个字符串,如我所料,但它还保留了 b(字节符号)和 '(引号)。

为什么要这样做,而不只是打印引号之间的消息?

请您参考如下方法:

不要将 bytes 值视为某些默认 8 位编码中的字符串。它只是二进制数据。因此,str(a) 返回一个与编码无关的字符串来表示字节字符串的值。如果您想要 'Hello World',请具体化并解码该值。

>>> b = a.decode() 
>>> type(b) 
>>> str 
>>> print(b) 
Hello World 

在 Python 2 中,字节和文本之间的区别变得模糊。 Python 3 竭尽全力将两者分开:bytes 用于二进制数据,str 用于可读文本。

换个角度比较

>>> list("Hello") 
['H', 'e', 'l', 'l', 'o'] 

与

>>> list(b"Hello") 
[72, 101, 108, 108, 111]