📅  最后修改于: 2023-12-03 15:34:12.584000             🧑  作者: Mango
在 Python 中,我们可以使用内置函数 find()
和 index()
来查找一个字符串中的子字符串。这两个函数都可以返回子字符串在字符串中的起始位置,但是 find()
函数如果找不到子字符串则返回 -1,而 index()
函数则会引发一个 ValueError 异常。
如果我们要查找一个字符串中所有的某个子字符串出现的位置,我们可以使用正则表达式或者字符串自带的 count()
函数,但是这些方法只能返回子字符串出现的次数,而不能返回每一次出现的位置。
在这种情况下,我们可以使用一个自定义的函数,它可以找到一个字符串中所有子字符串的位置并返回一个列表。下面是一个示例代码:
def find_all(sub, string):
"""
找到一个字符串中所有子字符串的位置
:param sub: 子字符串
:param string: 目标字符串
:return: 所有子字符串的起始位置的列表
"""
start = 0
result = []
while True:
start = string.find(sub, start)
if start == -1:
break
result.append(start)
start += len(sub)
return result
这个函数接受两个参数:子字符串和目标字符串。它首先将起始位置设为 0,然后在每次循环中查找子字符串,如果找到了就将其起始位置添加到结果列表中,然后继续查找下一个子字符串,直到字符串中没有子字符串为止。
下面是如何使用这个函数的示例代码:
string = "Python is a powerful programming language"
sub = "ing"
result = find_all(sub, string)
print(result)
这个程序将输出:[14, 28]
,因为子字符串 "ing" 出现在原字符串中的 14 和 28 位置。
通过这种方式,我们可以轻松地找到一个字符串中所有子字符串的位置。