定义函数findall,实现对字符串find方法的进一步封装,如字符串"helloworldhellopythonhelloc++hellojava",要求返回符合要求的所有位置的起始下标,需要找出里面所有的"hello"的位置,最后将返回一个元组(0,10,21,29),即将h的下标全部返回出来,而find方法只能返回第一个
def findall(s,s1):
# 定义一个空列表
my_list = []
# 要查询的字符串的长度
l = len(s1)
while True:
# 获取查询的字符串在原字符串中第一次出现的下标
index = s.find(s1)
# 原字符串中存在要查找的字符串
if index != -1:
# 列表中有元素
if len(my_list) != 0:
# 添加的是要查找的字符串在最原始的字符串中的下标
my_list.append(my_list[-1]+index+l)
# 列表是空,表示第一次查询
else:
my_list.append(index)
# 截取原字符串,把要查找的字符串之前的字符切掉,形成新的字符串
s = s[index+l:]
else:
break
return tuple(my_list)
print(findall("helloworldhellopythonhelloc++hellojava", "hello"))