Select Language

AI社区

AI技术百科

2.21、Python str和bytes的转换

在 Python 3 中同时支持 str 类型和 bytes 两种类型,它们之间是可以相互转换的。如从 str 转换成 bytes,可以使用 encode() 成员函数。

>>> a = "abc"
>>> a'abc'
>>> b = a.encode("utf-8")
>>> type(b)<class 'bytes'>

下面的代码说明了带有中文的 str 类型是如何转换成 bytes 类型的。

>>> a = "最爱中国"         # str类型
>>> len(a)                 # 长度为4,4个字符
4
>>> type(a)                # 类型<class 'str'>
>>> b = a.encode("utf-8")  # 将其转换成str类型,方式是utf-8
>>> type(b)<class 'bytes'>          
>>> len(b)                 # 字节个数为12,每个中文在utf-8中用3个字节表示
12
>>> b                      # 各个字节的内容
b'\xe6\x9c\x80\xe7\x88\xb1\xe4\xb8\xad\xe5\x9b\xbd'

从 bytes 类型转换成 str 类型可以使用成员函数 decode(),下面的代码说明了普通的拉丁字母是如何进行转换的。

>>> b = b"abc"
>>> type(b)<class 'bytes'>
>>> len(b)
3
>>> a = b.decode("utf-8")
>>> type(a)<class 'str'>
>>> len(a)
3
>>> a'abc'

下面的代码说明了成员函数 decode() 如何将 bytes 类型转换成含中文字符的 str 类型。

>>> b = b'\xe6\x9c\x80\xe7\x88\xb1\xe4\xb8\xad\xe5\x9b\xbd'
>>> len(b)                 # 字节个数
12
>>> type(b)
< class 'bytes'>
>>> b
b'\xe6\x9c\x80\xe7\x88\xb1\xe4\xb8\xad\xe5\x9b\xbd'
>>> a = b.decode("utf-8")  # 按照utf-8的格式进行解码,每3个字节表示一个中文字符
>>> type(a)<class 'str'>
>>> len(a)                 # 字符个素
4
>>> a'最爱中国'


我要发帖
  • 26

    条内容
Python基本数据类型一共26个章节
本章将介绍 Python 内置的基本数据类型,包括整型、浮点数、字符串、布尔型、列表、元组、集合和字典等 Python 定义的基本数据类型,以及这些数据类型的运算操作。
我们知道,Python 是强类型语言,每个变量在某个时刻的类型是确定的。也就是说,Python 中任意一个存活的对象,其类型是唯一的。不同类型的对象有不同的属性,能完成不同的操作。
另外本章最后还会介绍变量、对象等概念。每个对象都有一个确定的类型,每个变量都指向某个特定的对象。