6.2 字符串

字符串类型是Python里面最常见的类型。我们可以简单地通过在引号间包含字符的方式创建它。 Python里面单引号和双引号的作用是相同的,这一点Python不同于其他类Shell的脚本语言,在这些脚本语言中,通常转义字符仅仅在双引号字符串中起作用,在单一号括起的字符串中不起作用。Python用“原始字符串”操作符来创建直接量字符串,所以再做区分就没什么意义了。其他的语言,比如C语言里面用单引号来标示字符,双引号标示字符串,而在Python里面没有字符这个类型。这可能是双引号和单引号在Python里面被视作一样的另一个原因。几乎所有的Python应用程序都会某种方式用到字符串类型。字符串是一种直接量或者说是一种标量,这意味着Python解释器在处理字符串时是把它作为单一值并且不会包含其他Python类型的。字符串是不可变类型,就是说改变一个字符串的元素需要新建一个新的字符串。字符串是由独立的字符组成的,并且这些字符可以通过切片操作顺序地访问。

根据在2.2节里面对类型和类的概念进行的统一,Python实际上有三类字符串。通常意义的字符串(str)和Unicode字符串(unicode)实际上都是抽象类basestring的子类。这个basestring是不能实例化的,如果你试图实例化一个basestring类,你会得到以下报错信息。

6.2 字符串 - 图1

1. 字符串的创建和赋值

创建一个字符串就像使用一个标量一样简单,当然你也可以把str()作为工厂方法来创建一个字符串并把它赋值给一个变量。

6.2 字符串 - 图2

2. 如何访问字符串的值(字符和子串)

Python里面没有字符这个类型,而是用长度为1的字符串来表示这个概念,当然,这其实也是一个子串。用方括号加一个或者多于一个索引的方式来获得子串;

6.2 字符串 - 图3

3. 如何改变字符串

你可以通过给一个变量赋值(或者重赋值)的方式“更新”一个已有的字符串。新的值可能与原有值差不多,也可能跟原有串完全不同。

6.2 字符串 - 图4

跟数字类型一样,字符串类型也是不可变的,所以你要改变一个字符串就必须通过创建一个新串的方式来实现。也就是说你不能只改变一个字符串的一个字符或者一个子串,然而,通过拼凑一个旧串的各个部分来得到一个新串是被允许的,正如上面你看到的那样。

4. 如何删除字符和字符串

再重复一遍,字符串是不可变的,所以你不能仅仅删除一个字符串里的某个字符,你能做的是清空一个空字符串,或者是把剔除了不需要的部分后的字符串组合起来形成一个新串。假设你想要从“Hello World!”里面删除小写的“1”。

6.2 字符串 - 图5

通过赋一个空字符串或者使用del语句来清空或者删除一个字符串:

6.2 字符串 - 图6

在大部分应用程序里,没有必要显式的删除字符串。定义这个字符串的代码最终会结束,那时Python会自动释放这些字符串。