我正在尝试查看一个字符串是否存在于另一个字符串中,而不使用 Python 的预定义函数,例如 find 和 index..
现在我的函数需要 2 个字符串作为参数,一个是我们要搜索的字符串,而另一个字符串是我们在第一个字符串中寻找的字符串。
如果第二个字符串存在于第一个字符串中,我希望我的函数返回它出现在第一个字符串中的所有位置。
现在,我的函数能够找到第一个匹配项并返回一个索引,但是我想找到多个匹配项,而不仅仅是第一个。
下面是我的代码:
def multi_find (s, r):
s_len = len(s)
r_len = len(r)
if s_len < r_len:
n = -1
else:
m = s_len - r_len
n = -1 # assume r is not yet found in s
i = 0
while n == -1 and i < m:
# search for r in s until not enough characters are left
if s[i:i + r_len] == r:
n = i
else:
i = i + 1
print (n)
multi_find("abcdefabc. asdli! ndsf acba saa abe?", "abc")
现在,这将只输出“0”,因为那是 abc 首先出现的地方。我怎样才能让它返回“0”和“6”(第二次出现的开始),基本上在找到一个之后继续检查。
我正在考虑创建一个它发生的所有位置的列表,然后将 i 附加到该列表中,但是当我尝试这样做时,没有任何东西对我有用。