如何在 Python 中检查一个字符串是否包含另一个字符串(子字符串)?


子字符串是指字符串中连续的字符序列。换句话说,它是出现在较长文本中的一小段文本。

例如,在字符串“lorem ipsum”中,子字符串“lorem”出现在较长的字符串中。同样,子字符串“em i”也出现在较长的字符串“lorem ipsum”中。

子字符串操作在编程中很常见,可用于各种任务,例如在文本中搜索特定单词、提取文本的一部分或用其他单词替换文本的某些部分。

在 Python 中检查一个字符串是否包含另一个字符串(子字符串)是一项常见任务,可以使用多种方法来完成。让我们考虑下面一些最常用的方法,以及您可以自己尝试的代码示例。

使用“in”运算符

检查子字符串是否包含在字符串中最简单的方法是使用 in 运算符。以下是操作方法

示例

在此代码中,我们定义了一个名为 string 的字符串变量,其中包含文本“lorem ipsum”。我们还定义了一个名为 substring 的子字符串变量,其中包含文本“ipsum”。

然后,我们使用 if 语句检查子字符串是否包含在字符串中。in 运算符检查 substring 是否为 string 的子字符串,如果是则返回 True,否则返回 False。

如果在字符串中找到子字符串,我们将打印消息“子字符串已找到!”。否则,我们将打印消息“子字符串未找到”。

string = "lorem ipsum"

substring = "ipsum"
if substring in string:
    print("Substring found!")
else:
    print("Substring not found.")

输出

Substring found!

使用 find() 方法

检查子字符串是否包含在字符串中的另一种方法是使用 find() 方法。以下是一个示例

示例

在此代码中,我们定义了如上所示的 string 和 substring 变量。

然后,我们使用 string 变量的 find() 方法检查子字符串是否包含在字符串中。find() 方法在字符串中搜索子字符串,并返回子字符串首次出现的索引,如果未找到子字符串则返回 -1。

我们使用 if 语句检查 string.find(substring) 的结果是否不等于 -1。如果不等于 -1,则表示在字符串中找到了子字符串,因此我们打印消息“子字符串已找到!”。否则,我们将打印消息“子字符串未找到”。

string = "lorem ipsum"
substring = "dolor"
if string.find(substring) != -1:
    print("Substring found!")
else:
    print("Substring not found.")

输出

Substring not found.

使用正则表达式

检查子字符串是否包含在字符串中的另一种方法是使用正则表达式。

示例

在此代码中,我们首先导入 re 模块,该模块为 Python 中的正则表达式提供支持。

然后,我们像以前一样定义 string 和 substring 变量。

我们使用 re.search() 函数在字符串中搜索子字符串。re.search() 函数在字符串中搜索与 substring 表示的正则表达式匹配的内容。

如果找到匹配项,则 re.search() 函数将返回一个匹配对象,在布尔上下文中,该对象被视为 True。如果未找到匹配项,则该函数将返回 None,在布尔上下文中,该对象被视为 False。

我们使用 if 语句检查 re.search(substring, string) 的结果是否为 True。如果是,则表示在字符串中找到了子字符串,因此我们打印消息“子字符串已找到!”。否则,我们将打印消息“子字符串未找到”。

import re
string = "lorem ipsum"
substring = "ipsum"

if re.search(substring, string):
    print("Substring found!")
else:
    print("Substring not found.")

输出

Substring found!

使用 startswith() 方法

检查子字符串是否包含在字符串中的一种不同的方法是使用 startswith() 方法。

示例

在此代码中,我们像以前一样定义 string 和 substring 变量。

我们使用 string 变量的 startswith() 方法检查子字符串是否位于字符串的开头。如果字符串以子字符串开头,则 startswith() 方法返回 True,否则返回 False。

我们使用 if 语句检查 string.startswith(substring) 的结果是否为 True。如果是,则表示在字符串中找到了子字符串,因此我们打印消息“子字符串已找到!”。否则,我们将打印消息“子字符串未找到”。

string = "lorem ipsum"
substring = "dolor"

if string.startswith(substring):
    print("Substring found!")
else:
    print("Substring not found.")

输出

Substring not found.

使用列表推导式

检查子字符串是否包含在字符串中的另一种方法是使用列表推导式。

示例

在此代码中,我们再次像以前一样定义 string 和 substring 变量。

我们使用列表推导式将字符串拆分为单个单词,并检查子字符串是否包含在任何这些单词中。string 变量的 split() 方法使用空格作为分隔符将字符串拆分为单词列表。然后,列表推导式检查子字符串是否包含在列表中每个单词中。

我们使用 any() 函数检查列表推导式返回的列表中的任何值是否为 True。如果列表中的至少一个值为 True,则 any() 函数返回 True,否则返回 False。

我们使用 if 语句检查 any([substring in word for word in string.split()]) 的结果是否为 True。如果是,则表示在字符串中找到了子字符串,因此我们打印消息“子字符串已找到!”。否则,我们将打印消息“子字符串未找到”。

string = "lorem ipsum"
substring = "lorem"
if any([substring in word for word in string.split()]):
    print("Substring found!")
else:
    print("Substring not found.")

输出

Substring found!

因此,这些是在 Python 中检查子字符串是否包含在字符串中的一些不同方法!根据您的具体用例,一种方法可能比另一种方法更合适。但总的来说,'in' 运算符和 find() 方法是此任务中最常用的方法。

更新于: 2023年8月10日

398 次浏览

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告