字符串的索引与分片
字符串可以通过运算符[]进行索引与分片,字符串中每个字符都对应两个编号(也称下标),如下图所示。

在上图中,字符串str正向编号从0开始,代表第一个字符,依次往后;字符串str负向编号从-1开始,代表最后一个字符,依次往前。因为编号可正可负,所以字符串中的某个字符可以有两种方法索引,例如索引str中字符'q',具体示例如下:
str[4]
str[-9]
上述两种形式都可以索引到字符'q'。
字符串分片是指从字符串中截取部分字符并组成新的字符串,并不会对原字符串作任何改动,其语法格式如下:
[起始编号:结束编号:步长]
该语句表示从起始编号处开始,以指定步长进行截取,到结束编号的前一位结束。
接下来演示字符串的分片,如下所示。
1 str = "www.sunyu.com"
2 print(str[4:9]) # 默认步长为1
3 print(str[4:9:2]) # 设置步长为2
4 print(str[-9:-4]) # 默认步长为1
5 print(str[-9:-4:2]) # 设置步长为2
6 print(str[:]) # 整个字符串
7 print(str[:9]) # 等价于str[0:9:1]
8 print(str[4:]) # 默认到字符串尾部(包括最后一个字符)
9 print(str[:-9]) # 从第一个字符到编号为-9的字符(不包括编号为-9的字符)
10 print(str[-4:]) # 从编号为-4的字符到最后一个字符(包括最后一个字符)
11 print(str[::-2]) # 从后往前,步长为2
12 print(str[:-9]) # 从第一个字符到编号为-9的字符(不包括编号为9的字符)
运行结果如下图所示。

在上例中,每种形式中第一个冒号两边表示分片从何处开始及到何处结束,第二个冒号后表示步长。在实际编程中,字符串的处理经常会用到分片,大家应灵活运用各种形式。
字符串的运算
除了数字类型的数据可以参与运算外,字符串也可以参与运算,如上节中字符串通过[]运算符进行索引与分片,具体如下表所示。
运算符 | 说明 |
---|---|
+ | 字符串连接 |
* | 重复字符串 |
[] | 索引字符串中的字符 |
[:] | 对字符串进行分片 |
in | 如果字符串中包含给定字符,返回True |
not in | 如果字符串中包含给定字符,返回False |
r或R | 原样使用字符串 |
接下来演示字符串的运算,如下所示。
1 str1, str2 = "隼", "鱼"
2 print(str1 + str2)
3 print(3 * (str1 + str2))
4 if "sunyu" in "sunyu.com":
5 print("sunyu is in sunyu.com")
6 else:
7 print("sunyu is not in sunyu.com")
运行结果如下图所示。

在上例中,第2行输出两个字符串相加的结果,第3行输出两个字符串相加并重复3次的结果,第4行判断字符串sunyu .com中是否包含sunyu 。
网友评论