Python字符串操作之字符串搜索与替换

时间:2021-08-31 10:22:32

11、字符串中的搜索和替换

11.1 str.find():正序字符串查找函数 
函数原型: 
str.find(substr [,pos_start [,pos_end ] ] ) 
返回str中第一次出现的substr的第一个字母的标号,如果str中没有substr则返回-1,也就是说从左边算起的第一次出现的substr的首字母标号。

参数说明: 
str:代表原字符串 
substr:代表要查找的字符串 
pos_start:代表查找的开始位置,默认是从下标0开始查找 
pos_end:代表查找的结束位置

#查找字符串'dd'第一次出现的位置
>>> 'acddl123'.find('dd')
2
#查找第一次出现空格的位置
>>> 'acdd l1 23'.find(' ')
4
#指定查找的起始位置和结束位置
>>> 'acdd l1 23'.find(' ',3 ,6)
4
#未找到返回-1
>>> 'acdd l1 23'.find(' ',5 ,6)
-1
#只指定查找的起始位置(不能只指定查找的结束位置)
>>> 'acdd l1 23'.find(' ',5 )
7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

11.2 str.index():正序字符串查找函数 
index()函数类似于find()函数,在Python中也是在字符串中查找子串第一次出现的位置,跟find()不同的是,未找到则抛出异常。 
函数原型: 
str.index(substr [, pos_start, [ pos_end ] ] ) 
参数说明: 
str:代表原字符串 
substr:代表要查找的字符串 
pos_start:代表查找的开始位置,默认是从下标0开始查找 
pos_end:代表查找的结束位置

#查找字符串中第一次出现空格的位置
>>> 'acdd l1 23'.index(' ')
4
#未找到时抛出ValueError异常
>>> 'acdd l1 23'.index(' ')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
#指定起始查找位置
>>> 'acdd l1 23'.index(' ',5)
7
#指定起始查找位置和结束查找位置
>>> 'acdd l1 23'.index(' ',5,9)
7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

11.3 str.rfind():倒序字符串查找函数 
函数原型: 
str.rfind( substr [, pos_start [,pos_ end ] ]) 
返回str中最后出现的substr的第一个字母的标号,如果str中没有substr则返回-1,也就是说从右边算起的第一次出现的substr的首字母标号。

参数说明: 
str:代表原字符串 
substr:代表要查找的字符串 
pos_start:代表查找的开始位置,默认是从下标0开始查找 
pos_end:代表查找的结束位置

#查找最后一次出现字母'd'的位置
>>> 'adsfddf'.rfind('d')
5
#指定查找的开始和结束位置查找
>>> 'adsfddf'.rfind('d',3,5)
4
#指定开始查找的位置进行查找
>>> 'adsfddf'.rfind('d',3)
5
#未找到返回-1
>>> 'adsfddf'.rfind('d6')
-1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

11.4 str.rindex():倒序字符串查找函数 
rindex()函数类似于rfind()函数,在Python中也是在字符串中倒序查找子串最后一次出现的位置,跟rfind()不同的是,未找到则抛出异常。 
函数原型: 
str.rindex(substr [, pos_start, [ pos_end ] ] ) 
参数说明: 
str:代表原字符串 
substr:代表要查找的字符串 
pos_start:代表查找的开始位置,默认是从下标0开始查找 
pos_end:代表查找的结束位置

#倒序查找最后一次出现字母'd'的位置
>>> 'adsfddf'.rindex('d')
5
#指定查找的开始和结束位置开始查找
>>> 'adsfddf'.rindex('d',3,6)
5
>>> 'adsfddf'.rindex('fd',3,6)
3
#未找到抛出ValueError异常
>>> 'adsfddf'.rindex('d6')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

11.5 str.replace():字符串替换函数 
函数原型: 
str.replace(oldstr, newstr [, count]) 
把str中的oldstr替换成newstr,如果指定了count参数,表示替换最多不超过count次。如果未指定count参数,表示全部替换,有多少替换多少。

#指定替换次数
>>> 'aabbdssdf12sdaacddaa'.replace('aa','-',2)
'-bbdssdf12sd-cddaa'
#不指定替换次数,将字符串中全部\n去掉,可以理解去全部替换为None了
>>> 'a\nsd\r\t\n'.replace('\n','')
'asd\r\t'
#将字符串中全部的'.'去掉
>>> 'a....sd\r\t....\n'.replace('.','')
'asd\r\t\n'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

11.6 str.count():计算字符串中某个子串的个数 
函数原型: 
str.count(substr, [start, [end] ]) 
在字符串str中统计子串substr出现的次数,如果不指定开始位置start和结束位置end,表示从头统计到尾。

#统计子串'aa'在原字符串中出现的总次数
>>> 'aadgdxdfadfaadfgaa'.count('aa')
3
>>> 'aadaadfgaa'.count('d')
2
#从下标为3的位置开始统计子串'aa'出现的次数
>>> 'aadgdxdfadfaadfgaa'.count('aa',3)
2
#在下标为3和6的位置开始统计子串'aa'出现的次数,但不包括6
>>> 'aadgdxdfadfaadfgaa'.count('aa',3,6)
0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

11.7 str.expandtabs():将tab字符替换成空格 
函数原型: 
str.expandtabls([tabsize]) 
将str字符串中的tab字符替换成tabsize个空格,默认是8个空格。

#使用默认个数的空格替换字符串中的tab字符
>>> 'a v f'.expandtabs()
'a v f'
#将tab字符替换成2个空格
>>> 'a v f'.expandtabs(2)
'a v f'