2.3.2 字符串类型的操作

优质
小牛编辑
128浏览
2023-12-01

2.3.2 字符串类型的操作

在实际应用中,对字符串最常用的操作是访问字符串中的个别字符。Python 语言为字

符串类型提供了索引操作,可以用来访问字符串内部的任意组成字符。 字符串是字符序列,每个字符在序列中的位置都由一个从 0 开始的整数编号指定,这个

编号称为位置索引。因此,第一个位置的索引是 0,第二个位置的索引是 1,依此类推。通 过索引我们可以指定字符串中的任意位置,从而可以访问该位置上的字符。下面是通过索引 操作访问字符串内容的一般形式:

<字符串>[<数值表达式>]

数值表达式的值就是位置索引,整个索引操作的返回结果就是索引位置上的字符。例如:

>>> s = "Good morning!"
>>> s[0]
'G'
>>> s[12]
'!'
>>> i = 8
>>> s[i+4]
'!'

注意,在长度为 n 的字符串中,最后一个字符的索引位置是 n-1。初学者很容易犯的一 个错误是:因为字符串 s 的长度为 12,所以通过 s[12]来访问其最后一个字符。务必记住, 计算机科学和程序设计中,习惯是从 0 开始计数。

Python 还支持从后往前的索引方式:索引-1 代表倒数第一个位置,索引-2 代表倒数第 二个位置,依此类推。利用这个表示法,无需知道字符串长度即可访问最后一个字符:

>>> s[-1]
'!'

以上是通过索引操作访问字符串中的单个字符,Python 也支持通过索引操作来访问字 符串的子串,方法是指定字符串的一个索引区间。这种操作也称为切分。切分操作的一般形 式是:

<字符串>[开始位置:结束位置]

其中开始位置和结束位置都是 int 类型的表达式,含义是返回字符串中从开始位置到结束位置(不含结束位置!)的一个子串。开始位置和结束位置是可选的,在没有指定的情况下 Python

默认开始位置为 0,结束位置为 n。承接上面的例子继续进行如下切分操作:

>>> s[0:3]
'Goo'
>>> s[5:13]
'morning!'
>>> s[:10]
'Good morni'
>>> s[5:]
'morning!'
>>> s[:]
'Good morning!'
>>> s[2:-2]
'od mornin'

除了索引操作,字符串类型还支持字符串的合并(+)、复制(*)、子串测试(in)操作, 并提供一个求字符串长度的内建函数 len()。其中子串测试返回一个布尔值(True 或 False), 关于布尔类型参见 2.4 节。例如:

>>> "Good" + "Bye"
'GoodBye'
>>> 2 * "Bye" 'ByeBye'
>>> "ok" in "cook"
True
>>> len("Good"*3 + 2*"Bye")
18

在应用程序中有时也许会希望修改一个字符串,正如现实世界中有人去派出所修改自己 的名字一样。利用索引机制似乎很容易实现修改字符串的功能,例如下面的语句试图将 "Tom"改成"Tim":

>>> name = "Tom"
>>> name[1] = "i"

但很遗憾,Python 中的字符串类型的值是不能修改的!上述操作将导致如下结果:

Traceback (most recent call last):
File "<pyshell#25>", line 1, in &lt;module&gt; name[1] = "i"
TypeError: 'str' object does not support item assignment

其中最后一行的意思是:str 类型的数据不支持对其成员的赋值。name[1]是字符串"Tom" 的第 2 个成员,因此不能对其进行赋值!

最后,我们将以上介绍的各种基本字符串操作整理成表 2.4,以方便查阅。

字符串操作含义
[]索引操作
[:]切分操作
+合并字符串
*复制字符串
len(<字符串>)字符串长度
<字符串 1> in <字符串 2>子串测试

表 2.4 字符串操作