本章的范围——unicode:简要概述 | 第二部分 类型与操作 —— 第 7 章: 字符串基础 |《学习 python:强大的面向对象编程(第 5 版)》| python 技术论坛-金年会app官方网
对那些关心unicode的读者来说,我也愿意提供其影响的快速小结和未来研究的指引。从一个普通的角度,ascii是unicode文本的一种简单形式,但只是许多可能的编码和字母表之一。来自非英语国家的文本可能使用非常不同的文本,且在存储在文件中时可能编码得非常不同。
如第4章中所见:python通过区分文本和二进制数据来解决这个问题,对文本和二进制使用不同的字符串对象类型和文件接口。这种支持根据版本系列而异(译注:因时间关系,从目前开始,只翻译3系列的,2系列的只保留原文备查,下同):
- 在python 3系列中,有三种字符串类型:
str
适用于unicode文本(包括ascii),bytes
适用于二进制数据(包括编码的文本),和bytearray
是bytes
的一种可变的变体。文件工作在两种模式下:text
,它以str
代表内容且实现unicode编码;binary
,它用原始字节处理且不进行数据翻译(编码)。 - in python 2.x, unicode strings represent unicode text, str strings handle both 8-bit text and binary data, and bytearray is available in 2.6 and later as a back-port from 3.x. normal files’ content is simply bytes represented as str, but a codecs module opens unicode text files, handles encodings, and represents content as unicode objects.
尽管有这些版本差异,如果且当你不需要关心unicode时,将发现它是相对小的扩展——一旦文本在内存中,它就是一个python字符的字符串,支持将在本章中学习的所有基础知识。事实上,unicode的主要区别通常在于写入写出文件所需的翻译(编码)步骤。除了那个,很大程度上只是字符串处理。
然而,再说一次,因为大多数程序员最初不需要掌握unicode细节,我已经将大多数内容移到了第37章。当准备好学习这些更高级的字符串概念时,我鼓励你在读完这里的字符串基础材料后,去学习第4章中的预览和第37章中的unicode和字节的完整披露。
对本章而言,将重点关注基本的字符串类型和其操作。将发现:这里学习的技术也将直接应用于python工具集中的更高级字符串类型。