《流畅的Python》学习笔记(5) —— 文本和字节序列

流畅的Python(5) —— 文本和字节序列

Python中对字符串的管理有两种方式一种是:字符序列另一种是Unicode,在中文的自然语言处理中,会使用到文本数据,所以需要仔细地研究字符串与文本关系,这也是Python中的一个坑点。

下图为Unicode与字节码的关系:
在这里插入图片描述

1.Unicode(码位) 与bytes(字节序列)

Unicode就是我们常说的“字符”,也叫码位,Python中string类型是Unicode编码,可以把他认为是人类看懂的字符,对于Python而言是统一的。

字节码:是由byte字节类型组成,用来表示字符的串。在C语言中,变量类型为char,占一个字节,根据不同的编码方法同一个字符会有不同个数的字节来表示。

2. 编解码问题

str.encode()和b.decode()是连接Unicode和bytes之间的两个重要方法。
在这里插入图片描述
编码(encode):将Unicode按照编码方法(如:UTF-8, UTF-16)编译成字节序列

解码(decode):将字节序列按照编码方法编译成Unicode编码

值得注意的是: 编解码的方法需要事先指定,否则回造成UnicodeError等常见错误

3. 常见的字符串错误与最佳实践

常见错误
错误名称 原因
UnicodeEncodeError 把文本转换成字节序列时,如果目标编码中没有定义某个字符,就会报错
UnicodeDecodeError 把二进制序列转换成文本时,如果假设是这两个编码中的一个,遇到无法转换的字节序列时会抛出 UnicodeDecodeError

目前的最佳实践是,IO过程需要进行编解码操作,而数据处理阶段仅需要完全对Unicode进行操作。
在这里插入图片描述

发布了4 篇原创文章 · 获赞 2 · 访问量 151

猜你喜欢

转载自blog.csdn.net/baidu_34912627/article/details/104102767