Python 字符串处理全解析
1. 字符编码的发展
早期的字符编码标准存在很大局限性,虽然有些应用采用特殊技巧,通过添加重音和其他符号来传达额外字母,但标准的适用范围仍然非常有限。后来,Unicode 标准应运而生,它能包含世界上绝大多数语言所使用的字符。与 ASCII 不同,为了支持足够多的代码点,每个 Unicode 代码点占用超过一个字节。不过,当 Unicode 字符串加载到内存中时,这并不是问题,因为 Python 只有一种管理多字节值的方式。
需要注意的是,Unicode 标准实际上由超过一百万个单独的“代码点”组成,而非字符。代码点是一个代表书面文本某个方面的数字,可以是常规字符、符号或修饰符,如重音符号。为了与 Unicode 引入之前使用的系统兼容,有些字符甚至在多个代码点上都有体现。
在 Python 中,默认情况下,所有标准字符串都是 Unicode 字符串,这使得 Python 能够支持多种语言。上一节提到的字节字符串都需要使用 b
前缀来与标准 Unicode 字符串区分开来。
2. Python 不同版本的兼容性
在 Python 3.0 之前,和其他编程语言类似,Python 中的字符串默认是字节字符串,而 Unicode 由单独的类型表示。字节字符串在引用时无需前缀,而 Unicode 字符串使用 u
前缀来表明它们支持完整的 Unicode 字符集。在向 Python 3 过渡时,Unicode 字符串成为默认类型, u
前缀不再被支持。
遗憾的是,和本章前面提到的字节字符串一样,没有一种语法