如何查找字符串中字符第n次出现的索引

时间:2019-05-06 23:33:44

标签: python-3.x 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'第二第三次。

Python 3.x中有任何内置函数来获取字符串中字符的 nth 个出现的索引吗?

2 个答案:

答案 0 :(得分:1)

为什么不仅仅使用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

答案 1 :(得分:0)

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