Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何查找字符串中字符第n次出现的索引_Python 3.x_String - Fatal编程技术网

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

Python 3.x 如何查找字符串中字符第n次出现的索引,python-3.x,string,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 这些是'e'的第二个和第三个 Python 3.x中的任何内置函数都

我想要像这样的东西:

"/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
这些是'e'第二个第三个


Python 3.x中的任何内置函数都可以获取字符串中字符第n次出现的索引吗?为什么不使用for循环呢

"/home/hernan/PycharmProjects/test1/tensor.py".find('e',2) #Returns 7
"/home/hernan/PycharmProjects/test1/tensor.py".find('e',3) #Returns 14

str.find
函数中的第二个参数用于指示开始索引。不是要开始查看的事件的索引
'find a char'。find('a',3)
相当于
'find a char'[3:]。find('a')+3
(某种程度上;不处理搜索字符串不存在于正在搜索的完整字符串中的情况)。您必须为此编写自己的函数

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

为什么不使用for循环呢?我可以这样做,但我正在寻找Python中的内置函数。我已经详细说明了我的答案,以便更清楚。我明白了。关于Stackoverflow()有一个非常全面的问题和答案。然而,我不相信有任何内置功能可以实现这一点。
def search(full, toFind, occ):
    ret = 0
    while occ:
        ret = full.find( toFind, ret ) + 1
        occ -= 0
        if ret == -1:
            return -1
    return ret