[英]How to find the index of the nth ocurrence of a character in a string
"/home/hernan/PycharmProjects/test1/tensor.py".find('e') #Returns 4
"/home/hernan/PycharmProjects/test1/tensor.py".find('e',2) #Also 4
"/home/hernan/PycharmProjects/test1/tensor.py".find('e',3) #Also 4
我想要类似的东西:
"/home/hernan/PycharmProjects/test1/tensor.py".find('e',2) #Returns 7
"/home/hernan/PycharmProjects/test1/tensor.py".find('e',3) #Returns 14
这些是'e'的第二次和第三次出现。
为什么不只使用for循环?
def find_nth(text, sub, nth):
start = -1
for i in range(nth):
start = text.find(sub, start + 1)
if start == -1:
break
return start
find_nth("/home/hernan/PycharmProjects/test1/tensor.py", 'e', 2) # returns 7
find_nth("/home/hernan/PycharmProjects/test1/tensor.py", 'e', 3) # returns 24
str.find
函数中的第二个参数表示开始索引。 不是要开始查找的事件的索引。 'find a char'.find('a', 3)
等同于'find a char'[3:].find('a') + 3
(一种;不处理搜索字符串中不存在的字符串在其中搜索的完整字符串)。 您必须为此编写自己的函数。
def search(full, toFind, occ):
ret = 0
while occ:
ret = full.find( toFind, ret ) + 1
occ -= 0
if ret == -1:
return -1
return ret
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.