为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕容3067478 2019-12-02 09:57:11
我得到一些简单的代码: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?
查看完整描述

3 回答

?
潇湘沐

TA贡献1816条经验 获得超6个赞

我会选择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)]


查看完整回答
反对 回复 2019-12-02
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

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 offs


for offs in find_offsets("ooottat", "o"):

    print offs

结果是


0

1

2


查看完整回答
反对 回复 2019-12-02
  • 3 回答
  • 0 关注
  • 644 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信