用python寻找字符串‘kdjfinn32n’中的第任意个n的索引。
问题起源:
断言TTS内容时,需要导入time模块获取配置报警联动的实时时间,并对TTS内容里面的字符串进行处理后断言,可以提高断言的成功率。
方法一、使用re模块寻找索引。
re.finditer()和span()的使用。
def search_n2(alphabet,str1,n): #alphabet:要查找的字母,str1:整个字符串,n:要查找第n个字母的索引
f=re.finditer(alphabet,str1) #返回一个iterator。
list1=[]
try:
for i in f: #遍历循环f i=<re.Match object; span=(7, 8), match='3'>, 用i.span()取出元组,其元组对应的第一位数字就是索引。
list1.append(i.span()[0])
return '字符%s在字符串%s中的索引是%d'%(alphabet,str1,list1[ n - 1 ])
except:
return '该字符串没有%d位%s'%(n,alphabet)
print(search_n2('n','kdjfinn32n',1)) #例如我要在该字符串中查找第1个n的索引是多少
这样就可以在一串字符串中取出你想取出的某单个字符的索引了
方法二、使用内置 函数/方法寻找索引。
内置函数/方法 find()的使用
def search_n(string, alphabet_you_want_search, n):#n表示你要查找第几个alphabet
"""寻找第n个字符'a'"""
r = string.find(alphabet_you_want_search)
while n > 1 and r >= 0:
r = string.find(alphabet_you_want_search, r + 1) #代表从索引r+1后开始找。
n -= 1
return r
str1='kdjfinn32n'
print(search_n(str1,'n',2)) #我要查找第2个n的索引。