学习Python中的字节到字符串

88 阅读5分钟

在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程序员,我们每天在不同的语言上工作,有时我们会因为字节的原因而产生错误。所以在这篇文章中,我们试图给出一些如何将字节转换为字符串的方法,这样当我们应用任何与字符串相关的方法时,你就不会得到任何错误。

在本教程中,我们已经给出了所有可以用来将字节转换为字符串的概念。你可以根据你的程序要求来选择。