我得到一些简单的代码: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)]
一只萌萌小番薯
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
添加回答
举报
0/150
提交
取消