如何在 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() 方法是此任务中最常用的方法。