如何在字符串中查找char并获取所有索引?

我得到一些简单的代码:


def find(str, ch):

    for ltr in str:

        if ltr == ch:

            return str.index(ltr)

find("ooottat", "o")

该函数仅返回第一个索引。如果我更改return to print,它将打印0 00。这是为什么,有什么办法得到0 1 2?


慕容3067478
浏览 645回答 3
3回答

潇湘沐

我会选择Lev,但值得指出的是,如果您最终进行了更复杂的搜索,那么使用re.finditer可能值得牢记(但是re经常带来的麻烦多于价值,但有时很容易知道)test = "ooottat"[ (i.start(), i.end()) for i in re.finditer('o', test)]# [(0, 1), (1, 2), (2, 3)][ (i.start(), i.end()) for i in re.finditer('o+', test)]# [(0, 3)]

一只萌萌小番薯

def find_offsets(haystack, needle):    """    Find the start of all (possibly-overlapping) instances of needle in haystack    """    offs = -1    while True:        offs = haystack.find(needle, offs+1)        if offs == -1:            break        else:            yield offsfor offs in find_offsets("ooottat", "o"):    print offs结果是012
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python