在Python中,只要我们存储任何东西,它都会以字节的形式存储。字节不是人类可读的,而字符串是人类可读的形式。每当我们存储任何字符串时,它不会直接将其存储为字符串;它将使用不同的方法如ASCII和UTF-8编码到字节中。
例如,'I am a linuxhint'.encode ('ASCII')
在上面的例子中,我们使用编码方法ASCII将字符串转换成字节。而当我们使用python打印方法打印它时,我们会看到像b'I am a linuxhint'这样的结果。在这里,我们可以看到字符串只跟了一个字符,即b。在实际情况下,我们无法读取字节,但在这里,python打印函数将字节解码为人类可读的形式,这样我们就可以读取字符串。
但是,实际上,当我们运行这个字符串来查看字节串的每个字符时,它会像这样打印。
str1 = 'I am a linuxhint'
print(type(str1))
str2 = b'I am a linuxhint'
print(type(str2))
我们创建了两个字符串。一个字符串是直截了当的。而另一个字符串是字节的。当我们打印这两个字符串类型时,那么我们得到的结果如下所示。下面的结果表明,一个字符串是字节类型,另一个是字符串类型。
<class 'str'>
<class 'bytes'>
现在,我们将打印这两个字符串的每个字符,以找出它们之间的区别。首先,我们将使用for循环打印一个字符串(str1),它是一个普通的字符串。
for a in str1:
print(a)
输出
I
a
m
a
l
i
n
u
x
h
i
n
t
现在,我们要打印另一个字符串(str2),它是一个字节类型。
for a in str2:
print(a)
输出
73
32
97
109
32
97
32
108
105
110
117
120
104
105
110
116
从上述结果中,我们可以看到字节类型和字符串类型之间的区别。字节类型不是人类可读的形式。
所以,现在我们将看到不同的方法可以将字节转换成字符串。
方法1:使用map()函数
在这个方法中,我们将使用map()函数将字节转换为字符串格式。下面的小程序将阐明这一概念。
byte = [97, 99, 100]
s = ''.join(map(chr, byte))
print(s)
输出
acd
第1行:我们创建了一个名为byte的列表。
第3行:然后我们把列表中元素的字符作为参数,把一个字节作为参数传给join()函数,该函数将把所有字符转换后连接起来。最后,结果被打印出来。
方法2:使用解码()函数
另一种方法是解码()函数。解码函数的工作原理与编码()函数正好相反。
#convert bytes to string using decode()
str = b'blogs linuxhint'
print(str)
print(type(str))
# now converting bytes to string
output = str.decode()
print('\nOutput:')
print(output)
print(type(output))
输出
b'blogs linuxhint'
<class 'bytes'>
输出
blogs linuxhint
<class 'str'>
第3行:我们已经创建了一个字节的字符串。
第4至5行:这些行只是打印我们在第3行创建的字符串的信息。
第8行:现在,我们调用解码函数并将结果保存到一个新的变量名中。
第11行至第12行:这些行显示现在我们的字符串已经不再是字节类型,我们可以确认输出的类型,即字符串类型。
方法3:使用codecs.decode()函数
在这个方法中,我们将使用codecs.decode()函数。这个函数用于将二进制字符串转换为正常形式。因此,让我们看看这个函数究竟是如何工作的。
#convert bytes to string using codecs()
import codecs
str = b'blogs linuxhint'
print(str)
print(type(str))
# now converting bytes to string
output = codecs.decode(str)
print('\nOutput:')
print(output)
print(type(output))
输出
b'blogs linuxhint'
<class 'bytes'>
输出
blogs linuxhint
<class 'str'>
第2行: 我们导入库中的编解码器。
第3行:我们创建了一个字节的字符串。
第4行到第5行:这些行只是打印我们在第3行创建的字符串的信息。
第8行:现在我们正在调用caodecs.decode函数,并将结果保存到一个新的变量名中。
第11至12行:这些行显示现在我们的字符串已经不再是字节类型,我们可以确认输出的类型,是字符串类型。
方法4:使用str()函数
我们还可以使用str()函数将字节转换成正常的字符串。下面给出了了解这种方法的小程序。
if __name__ == '__main__':
str1 = b'blogs linuxhint'
print(str)
print(type(str))
# now converting bytes to string
output = str(str1, 'utf-8')
print('\nOutput:')
print(output)
print(type(output))
输出
<class 'str'>
<class 'type'>
输出
blogs linuxhint
<class 'str'>
第2行:我们已经创建了一个字节的字符串。
第3至4行:这些行只是打印我们在第3行创建的字符串的信息。
第6行:现在,我们调用str()函数,并将结果保存到一个新的变量名下。
第7行至第9行:这些行显示现在我们的字符串不再是字节类型,我们可以确认输出的类型,即字符串类型。
总结
作为Python程序员,我们每天在不同的语言上工作,有时我们会因为字节的原因而产生错误。所以在这篇文章中,我们试图给出一些如何将字节转换为字符串的方法,这样当我们应用任何与字符串相关的方法时,你就不会得到任何错误。
在本教程中,我们已经给出了所有可以用来将字节转换为字符串的概念。你可以根据你的程序要求来选择。