《流畅的Python》中如何处理Python文本与字节序列转换?
- 内容介绍
- 文章标签
- 相关推荐
本文共计4376个文字,预计阅读时间需要18分钟。
字符问题+从Python3的str对象获取的元素是Unicode字符,相当于从Python2的unicode对象中获取的元素,而不是从Python2的str对象中获取的原始字节序列。
字符问题
从Python3的str对象获取的元素时Unicode字符,相当于从Python2的unicode对象中获取的元素,而不是从Python2的str对象中获取的原始字节序列。
把码位(字符的标识)转换成字节序列的过程是编码;把字节序列转换成码位的过程是解码:
>>> s = 'café'>>> len(s)#4个Unicode字符
4
>>> b = s.encode('utf8')#使用UTF-8把str对象编码成bytes对象
>>> b
b'caf\xc3\xa9' #bytes对象以b开头
>>> len(b)# 字节序列b有5个字节(UTF-8中,"é"的码位编码成两个字节)
5
>>> b.decode('utf8')#解码成str对象
'café'
虽然 Python 3 的 str 类型基本相当于 Python 2 的 unicode 类型,只不
过是换了个新名称,但是 Python 3 的 bytes 类型却不是把 str 类型换
个名称那么简单,而且还有关系紧密的 bytearray 类型。
字节概要
Python 内置了两种基本的二进制序列类型:Python 3 引入的不可变
bytes 类型和 Python 2.6 添加的可变 bytearray 类型。
本文共计4376个文字,预计阅读时间需要18分钟。
字符问题+从Python3的str对象获取的元素是Unicode字符,相当于从Python2的unicode对象中获取的元素,而不是从Python2的str对象中获取的原始字节序列。
字符问题
从Python3的str对象获取的元素时Unicode字符,相当于从Python2的unicode对象中获取的元素,而不是从Python2的str对象中获取的原始字节序列。
把码位(字符的标识)转换成字节序列的过程是编码;把字节序列转换成码位的过程是解码:
>>> s = 'café'>>> len(s)#4个Unicode字符
4
>>> b = s.encode('utf8')#使用UTF-8把str对象编码成bytes对象
>>> b
b'caf\xc3\xa9' #bytes对象以b开头
>>> len(b)# 字节序列b有5个字节(UTF-8中,"é"的码位编码成两个字节)
5
>>> b.decode('utf8')#解码成str对象
'café'
虽然 Python 3 的 str 类型基本相当于 Python 2 的 unicode 类型,只不
过是换了个新名称,但是 Python 3 的 bytes 类型却不是把 str 类型换
个名称那么简单,而且还有关系紧密的 bytearray 类型。
字节概要
Python 内置了两种基本的二进制序列类型:Python 3 引入的不可变
bytes 类型和 Python 2.6 添加的可变 bytearray 类型。

