📌  相关文章
📜  python 查找字符串中子字符串的所有元素 - Python (1)

📅  最后修改于: 2023-12-03 15:34:12.584000             🧑  作者: Mango

Python 查找字符串中子字符串的所有元素

在 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 位置。

通过这种方式,我们可以轻松地找到一个字符串中所有子字符串的位置。