如何在 Python 中检查字符串是否包含子字符串

PythonPythonBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个实验中,你将学习如何在 Python 中检查一个字符串是否包含子字符串。本实验将引导你通过使用正索引和负索引进行切片来定义子字符串。你将创建一个名为 substrings.py 的 Python 脚本,从给定的字符串中提取子字符串并将其打印到控制台。

本实验展示了如何使用切片来定义子字符串,通过指定起始和结束索引来提取字符串的部分内容。你将学习从字符串 "Hello, LabEx!" 中提取像 "Hello" 和 "LabEx" 这样的子字符串,以及如何使用负索引访问字符串的最后一个字符。本实验还包含运行脚本和验证输出的说明。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python/BasicConceptsGroup -.-> python/strings("Strings") python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") subgraph Lab Skills python/strings -.-> lab-559567{{"如何在 Python 中检查字符串是否包含子字符串"}} python/conditional_statements -.-> lab-559567{{"如何在 Python 中检查字符串是否包含子字符串"}} end

定义子字符串

在这一步中,你将学习如何在 Python 中定义子字符串。子字符串是字符串中连续的字符序列。理解如何处理子字符串对于许多字符串操作任务至关重要。

首先,在你的 ~/project 目录下创建一个名为 substrings.py 的 Python 脚本。你可以使用 VS Code 编辑器来创建这个文件。

## ~/project/substrings.py
string = "Hello, LabEx!"

这个脚本将一个名为 string 的字符串变量初始化为 "Hello, LabEx!"

现在,让我们添加一些代码来从这个字符串中提取子字符串。定义子字符串的一种简单方法是使用切片。切片允许你通过指定起始和结束索引来提取字符串的一部分。

在你的 substrings.py 文件中添加以下代码行:

## ~/project/substrings.py
string = "Hello, LabEx!"

substring1 = string[0:5]  ## 从索引 0 到 4 的字符
substring2 = string[7:12] ## 从索引 7 到 11 的字符

print(substring1)
print(substring2)

在这个例子中,substring1 将包含从索引 0 到(但不包括)索引 5 的字符,即 "Hello"substring2 将包含从索引 7 到(但不包括)索引 12 的字符,即 "LabEx"

要运行这个脚本,在 VS Code 中打开终端并执行以下命令:

python ~/project/substrings.py

你应该会看到以下输出:

Hello
LabEx

你还可以使用负索引来定义子字符串。负索引从字符串的末尾开始计数。例如,string[-1] 指的是字符串的最后一个字符。

修改你的 substrings.py 文件,添加以下内容:

## ~/project/substrings.py
string = "Hello, LabEx!"

substring1 = string[0:5]  ## 从索引 0 到 4 的字符
substring2 = string[7:12] ## 从索引 7 到 11 的字符
substring3 = string[-1]   ## 最后一个字符

print(substring1)
print(substring2)
print(substring3)

现在,再次运行脚本:

python ~/project/substrings.py

现在的输出应该会包含字符串的最后一个字符:

Hello
LabEx
!

理解如何使用切片来定义子字符串是 Python 中的一项基本技能。尝试使用不同的起始和结束索引来提取字符串的不同部分。

使用 in 运算符

在这一步中,你将学习如何在 Python 中使用 in 运算符来检查一个子字符串是否存在于某个字符串中。in 运算符是一种简单而高效的判断子字符串是否存在的方法。

让我们继续使用你在上一步中创建的 substrings.py 文件。我们将添加代码来检查某些子字符串是否存在于原始字符串中。

使用 VS Code 编辑器打开你 ~/project 目录下的 substrings.py 文件。

## ~/project/substrings.py
string = "Hello, LabEx!"

substring1 = "Hello"
substring2 = "Python"

print(substring1 in string)
print(substring2 in string)

在这个示例中,我们定义了两个子字符串 substring1substring2。然后,我们使用 in 运算符来检查每个子字符串是否存在于 string 变量中。如果找到了子字符串,in 运算符将返回 True,否则返回 False

要运行这个脚本,在 VS Code 中打开终端并执行以下命令:

python ~/project/substrings.py

你应该会看到以下输出:

True
False

这个输出表明 "Hello" 存在于字符串 "Hello, LabEx!" 中,而 "Python" 不存在。

你还可以在条件语句中使用 in 运算符。修改你的 substrings.py 文件,添加以下内容:

## ~/project/substrings.py
string = "Hello, LabEx!"

substring1 = "Hello"
substring2 = "Python"

if substring1 in string:
    print(f"'{substring1}' is found in '{string}'")
else:
    print(f"'{substring1}' is not found in '{string}'")

if substring2 in string:
    print(f"'{substring2}' is found in '{string}'")
else:
    print(f"'{substring2}' is not found in '{string}'")

现在,再次运行脚本:

python ~/project/substrings.py

现在的输出应该更具描述性:

'Hello' is found in 'Hello, LabEx!'
'Python' is not found in 'Hello, LabEx!'

in 运算符是 Python 中进行字符串操作的强大工具。它允许你轻松检查字符串中是否存在子字符串,使你的代码更具可读性和效率。

使用 find() 方法查找位置

在这一步中,你将学习如何在 Python 中使用 find() 方法来查找子字符串在字符串中的位置。find() 方法会返回子字符串首次出现的索引,如果未找到子字符串,则返回 -1。

让我们继续使用你在前面步骤中创建的 substrings.py 文件。我们将添加代码来查找特定子字符串在原始字符串中的位置。

使用 VS Code 编辑器打开你 ~/project 目录下的 substrings.py 文件。

## ~/project/substrings.py
string = "Hello, LabEx!"

substring1 = "LabEx"
substring2 = "Python"

position1 = string.find(substring1)
position2 = string.find(substring2)

print(position1)
print(position2)

在这个示例中,我们定义了两个子字符串 substring1substring2。然后,我们使用 find() 方法来查找每个子字符串在 string 变量中的位置。

要运行这个脚本,在 VS Code 中打开终端并执行以下命令:

python ~/project/substrings.py

你应该会看到以下输出:

7
-1

这个输出表明 "LabEx" 在字符串 "Hello, LabEx!" 中的索引为 7,而 "Python" 未找到(用 -1 表示)。

你还可以使用 find() 方法的可选起始和结束索引,在特定范围内搜索子字符串。修改你的 substrings.py 文件,添加以下内容:

## ~/project/substrings.py
string = "Hello, LabEx! LabEx"

substring1 = "LabEx"

position1 = string.find(substring1)         ## 查找首次出现的位置
position2 = string.find(substring1, 8)      ## 从索引 8 开始查找
position3 = string.find(substring1, 0, 5)   ## 在前 5 个字符内查找

print(position1)
print(position2)
print(position3)

现在,再次运行脚本:

python ~/project/substrings.py

现在的输出应该是:

7
14
-1

在这个示例中:

  • position1 找到了 "LabEx" 首次出现的位置,索引为 7。
  • position2 从索引 8 开始搜索,因此找到了 "LabEx" 第二次出现的位置,索引为 14。
  • position3 在字符串的前 5 个字符内搜索,因此未找到 "LabEx",返回 -1。

find() 方法是在字符串中定位子字符串的通用工具。了解如何使用可选的起始和结束索引可以让你进行更有针对性的搜索。

总结

在本次实验中,你学习了如何使用字符串切片在 Python 中定义子字符串。你创建了一个 Python 脚本,用于初始化一个字符串,然后通过指定起始和结束索引来提取子字符串,其中包括使用负索引从字符串末尾访问字符。本实验展示了如何将提取的子字符串打印到控制台。

关键要点在于理解如何使用正索引和负索引进行切片操作,以定义和提取字符串的特定部分,这是 Python 中字符串操作的一项基本技能。