有趣的字符串操作

字符串的读取采用下标参数,定义如下:

str【start:end:step】

注意:字符串下标采用左开右闭的原则,也就是说取的字符串是start~(end-1)

1、正常参数的例子

1 >>> str="Hello World"
2 >>> str[0:]
3 'Hello World'
4 >>> str[6:10]
5 'Worl'
6 >>> str[:5]
7 'Hello'
8 >>> str[0:10:2]
9 'HloWr'

2、如果序列的机尾处超过了原字符串的最后一个索引位置,则采用负数索引。-1指的是最后一个索引位置,-2为倒数第二个位置

字符 H e l l o   W o r l d
索引 0 1 2 3 4 5 6 7 8 9 10
  -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1

 

 

 

1 >>> str[3:-2]
2 'lo Wor'
3 >>> str[-1]
4 'd'
5 >>> str[-5:-1]
6 'Worl'

3、步长参数默认值为1,当用-1作为步长,意味着从后往前进行

1 >>> str[::2]
2 'HloWrd'
3 >>> str[::3]
4 'HlWl'
5 >>> str[::-1]
6 'dlroW olleH'
7 >>> str[::-2]
8 'drWolH'

4、在数字字符串上使用步长,能得到有趣的结果。不同步长和不同起始值,能得到奇数、偶数或者保留数字

 1 >>> digits="0123456789"
 2 >>> digits[::2]
 3 '02468'  #偶数
 4 >>> digits[1::2]
 5 '13579'  #奇数
 6 >>> digits[::-1]
 7 '9876543210' #反转
 8 >>> digits[::-2]
 9 '97531'  #反转后的奇数
10 >>> digits[-2::-2]
11 '86420'  #反转后的偶数

 5、更多的扩展:

  • step为正,则从左到右切片,如果 start > end,则为空
  • step为负,则从右到左切片,如果 start < end,则为空
  • start 和 end 为空,前者表示最开始,后者表示最后一个, 同时为空的时候,表示取所有。至于方向,取决于 step

可以总结一句规律,step 为正表示从左到右切片,反之为右到左。然后根据index 依次切片

 1 >>> a=list(i for i in range(1,11))
 2 >>> a
 3 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
 4 >>> 
 5 >>> a[8:3:-1]  
 6 [9, 8, 7, 6, 5]    # 右->左切片,step 为1,a[8]=9, a[7]=8, ... a[4]=5, 8-3=5个
 7 >>> 
 8 >>> a[10:0:-2]
 9 [10, 8, 6, 4, 2]   # 右->左切片, 切片的时候,不存在 index 越界情况,a[10]不存在,a[9]=10, a[7]=8, a[5]=6...
10 >>> 
11 >>> a[0:10:-2]     # start < end step 为负, 方向为右->左,第一个是 a[0], a[0]的左边就再也没有值了。为空
12 []
13 >>> 
14 >>> a[::-2]        # a[:]表示取所有,step 为负就反方向从右往左取
15 [10, 8, 6, 4, 2]
16 >>> 
17 >>> a[5::-2]       # 右->左,等价于 a[5:0:-2] a[5]=6, a[3]=4, a[1]=2
18 [6, 4, 2]
19 >>> 
20 >>> a[:5:-2]       # 右->左, 等价于 a[9:5:-2] a[9]=10, a[7]=8 
21 [10, 8]

 【扩展】

Python strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。

注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。

1 str1 = "00000003210Runoob01230000000" 
2 print(str1.strip('0'))  # 去除首尾字符 0
3 str2 = ", this. "
4 str3 = "this,,. "
5 print(str2.strip('., '))
6 print(str3.strip('., '))

结果为:

1 '3210Runoob0123'
2 'this'
3 'this'

PS1:

lstrip()、rstrip()和strip()类似,只是仅针对字符串开头和结尾

PS2:

一次性返回字符串的索引和值的函数:enumerate()

 

posted @ 2018-06-04 15:16  一天一点进步  阅读(438)  评论(0编辑  收藏  举报