字符串的find()返回子串在父串中的位置。
通过find()方法实现findall()返回子串在父串中出现的所有位置。
第一种方式:切片方式
代码如下:
def findall(string, s):
ret = [] # 定义列表 接受结果
if s == "":
return tuple(ret)
while True:
index = string.find(s) # 查找子串返回下标
if index != -1:
if len(ret) == 0: # 第一次找到直接加入列表
ret.append(index)
else:
# 当前位置 = 上次查找位置 + 本次查找 + 字符长度
ret.append(ret[-1] + index + len(s))
string = string[index + len(s):]
else:
break
return tuple(ret)
第二种方法:通过find()的默认参数
代码如下:
def findall(string, s):
ret = []
index = 0
while True:
index = string.find(s, index)
if index != -1:
ret.append(index)
index += len(s)
else:
break
return tuple(ret)