如何在 Python 中将字节转换为字符串

发布时间:2022-07-24

在本教程中,我们将学习如何使用 Python 脚本将字节转换为字符串。我们还将探索如何有效地使用这些数据类型。我们在本教程中包含 Python 3 方法,因为 Python 2 不再使用了。在深入挖掘这个主题之前,首先我们需要了解一下 Byte 数据类型的基本介绍。

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’,这意味着它产生的是字节数据类型,而不是字符串数据类型。 这两种数据类型之间的区别是

  • Str - 字符串是 Unicode 字符的序列(以 UTF-16 或 UTF-32 编码,完全取决于 Python 的编译)。
  • Bytes 或 byte - 表示 0 到 255 之间的整数,我们可以表示为‘b’或‘B’ 我们可以通过在常规字符串前面写“b”将任何字符串转换为字节。

注意: Python 2.x 忽略前缀“b”或“B”。

字符串和字节的关键区别

str 和 bytes 两种数据类型在 Python 2.x 中都被用作 byte 类型对象,但在 Python 3.x 的情况下就不是这样了。字节和 string 的关键区别在于字符串容易读取或者是人可读的,而字节最终是机器可读的,字符串在处理之前也会被转换成 Byte。 当我们在 Python 中声明一个字节数据类型时,它直接存储在磁盘中,一个字符串被转换成一个字节,然后存储在磁盘上。 字符串用于表示字符、单词或句子,而字节表示低级二进制数据结构。

在 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 ?!

解释- 我们在上面的代码中传递了编码格式,将 bytes 对象解码成一个字符串,并打印出来。

  • 使用编解码器模块 我们还可以使用 codecs 模块将字节数据类型转换为字符串。 示例-
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(),否则会得到一些意想不到的结果。错误的编码导致不正确的输出。 例如: 如果我们用 UTF-16 传递 str() 方法,会得到如下错误。

str(b, 'UTF-16')

输出:

'敌❴\u2073 牧扡愠\uf020 趟↕'

结论

本教程将帮助您处理字节数据类型。就像字符集一样,编码和二进制被用来编码和解码。我们已经定义了将字节数据类型转换为字符串的各种方法。