如何在Python中将字节转换为字符串
在本教程中,我们将学习如何使用Python脚本将字节转换为字符串。我们还将探讨如何高效地使用这些数据类型。因为Python 2不再使用,所以在本教程中我们包含了Python 3的方法。在深入研究这个主题之前,首先我们需要了解字节数据类型的基本介绍。
Python中的字节数据类型
如果对Python有所了解,那么应该已经知道字节数据类型了。但如果有人对Python不熟悉,那么我们将解释这个概念。让我们看下面的示例。
示例
string1 = 'Welcome to JavaTpoint'
print(type(string1))
string2 = b'Welcome to JavaTpoint'
print(type(string2))
输出:
<class 'str'>
<class 'bytes'>
解释
我们定义了两个具有相同值的字符串。这两个值看起来相似,但数据类型不同。第一个 string1变量 是 字符串 数据类型,而另一个是 字节 数据类型。第二个 string2 变量前缀为’b’,这意味着它生成 字节 数据类型而不是 字符串 数据类型。
这两种数据类型的区别是
字符串 – 字符串是Unicode字符的序列(编码为UTF-16或UTF-32,完全取决于Python的编译)。
字节或字节 – 它表示0到255之间的整数,我们可以用’b’或’B’表示它。
我们可以通过在常规字符串前面写入’b’的文字将任何字符串转换为字节。
注意 – Python 2.x忽略前缀’b’或’B’。
字符串和字节之间的主要区别
在Python 2.x中, str 和 bytes 数据类型都被用作字节类型对象,但在Python 3.x中不是这样。bytes和字符串之间的关键区别在于字符串容易读取或可读性高,而字节最终是机器可读的,字符串在处理之前也会转换为字节。
当我们在Python中声明字节数据类型时,它会直接存储在磁盘上,而字符串会被转换为字节后再存储在磁盘上。
字符串用于表示字符、单词或句子,而字节代表低级二进制数据结构。
将字节转换为字符串的方法
- 使用decode()方法
Python提供了内置的 decode() 方法,用于将字节转换为字符串。让我们来看下面的示例。
示例
byteData = b"Lets eat a \xf0\x9f\x8d\x95!"
# Let's check the type
print(type(byteData))
str1 = byteData.decode('UTF-8')
print(type(str1))
print(str1)
输出:
<class 'bytes'>
<class 'str'>
Lets eat a 🍕!
说明 –
我们在以上代码中传递了编码格式,将字节对象解码为字符串,并打印出来。
- 使用代码库将字节转换为字符串
我们还可以使用 codec 模块将字节数据类型转换为字符串。
示例
import codecs
byteData = b'Lets eat a \xf0\x9f\x8d\x95!'
codecs.decode(byteData, 'UTF-8')
输出:
Lets eat a 🍕
- 使用str()
这是将字节转换为字符串的最简单的方法。让我们看下面的示例。
示例
byteData = b'Lets eat a \xf0\x9f\x8d\x95!'
b1 = str(byteData, 'UTF-8')
print(b1)
输出:
Lets eat a 🍕&!
必须向 str() 方法传递编码参数,否则我们会得到一些意外的结果。错误的编码导致输出不正确。 例如 – 如果我们将 str() 方法与UTF-16一起使用,将会得到以下错误。
str(b, 'UTF-16')
输出:
'敌❴\u2073牧扡愠\uf020趟↕'
结论
本教程将帮助您处理字节数据类型。字符集、编码和二进制编码用于编码和解码。我们已经定义了各种方法将字节数据类型转换为字符串。