符串类型提供了索引操作,可以用来访问字符串内部的任意组成字符。 字符串是字符序列,每个字符在序列中的位置都由一个从 0 开始的整数编号指定,这个
编号称为位置索引。因此,第一个位置的索引是 0,第二个位置的索引是 1,依此类推。通 过索引我们可以指定字符串中的任意位置,从而可以访问该位置上的字符。下面是通过索引 操作访问字符串内容的一般形式:
数值表达式的值就是位置索引,整个索引操作的返回结果就是索引位置上的字符。例如:
>>> s[0]
'G'
>>> s[12]
'!'
'!'
注意,在长度为 n 的字符串中,最后一个字符的索引位置是 n-1。初学者很容易犯的一 个错误是:因为字符串 s 的长度为 12,所以通过 s[12]来访问其最后一个字符。务必记住, 计算机科学和程序设计中,习惯是从 0 开始计数。
以上是通过索引操作访问字符串中的单个字符,Python 也支持通过索引操作来访问字 符串的子串,方法是指定字符串的一个索引区间。这种操作也称为切分。切分操作的一般形 式是:
<字符串>[开始位置:结束位置]
其中开始位置和结束位置都是 int 类型的表达式,含义是返回字符串中从开始位置到结束位置(不含结束位置!)的一个子串。开始位置和结束位置是可选的,在没有指定的情况下 Python
默认开始位置为 0,结束位置为 n。承接上面的例子继续进行如下切分操作:
除了索引操作,字符串类型还支持字符串的合并(+)、复制(*)、子串测试(in)操作, 并提供一个求字符串长度的内建函数 len()。其中子串测试返回一个布尔值(True 或 False), 关于布尔类型参见 2.4 节。例如:
>>> "Good" + "Bye"
'GoodBye'
True
>>> len("Good"*3 + 2*"Bye")
18
但很遗憾,Python 中的字符串类型的值是不能修改的!上述操作将导致如下结果:
Traceback (most recent call last):
其中最后一行的意思是:str 类型的数据不支持对其成员的赋值。name[1]是字符串”Tom” 的第 2 个成员,因此不能对其进行赋值!
最后,我们将以上介绍的各种基本字符串操作整理成表 2.4,以方便查阅。
表 2.4 字符串操作