从 Python 中的字符串中提取子字符串
字符串是一个字符序列。无论我们从事软件开发还是竞争性编程,我们始终都在处理字符串。有时,在编写程序时,我们必须访问字符串的子部分。这些子部分通常称为子字符串。子字符串是字符串的子集。
在 Python 中,我们可以使用字符串切片或使用正则表达式或 regex 轻松完成此任务。
在 Python 中使用字符串切片提取子字符串
在 Python 中,有几种方法可以进行字符串切片。索引是最基本,最常用的方法。请参考以下代码。
myString = "Mississippi"
print(myString[:]) # Line 1
print(myString[4 : ]) # Line 2
print(myString[ : 8]) # Line 3
print(myString[2 : 7]) # Line 4
print(myString[4 : -1]) # Line 5
print(myString[-6 : -1]) # Line 6
输出:
Mississippi
issippi
Mississi
ssiss
issipp
ssipp
在上面的代码中,我们在存储字符串的变量的末尾添加了 []
括号。我们使用此符号进行索引。在这些括号内,我们添加了一些表示索引的整数值。
这是方括号 [start : stop : step]
的格式(以冒号(:
)分隔)。
默认情况下,start
的值是 0
或第一个索引,stop
的值是最后一个索引,step
的值是 1
。start
代表子字符串的开始索引,stop
代表子字符串的结束索引,step
代表在每个索引之后递增的值。
返回的子字符串实际上在 start
索引和 stop - 1
索引之间,因为在 Python 中索引从 0
开始。因此,如果我们想从 Mississippi
中检索 Miss
,则应使用 [0 : 4]
方括号不能为空。如果要使用默认值,则应在所需数量的冒号:
之间添加空格,以指出要引用的参数。请参考以下列表以更好地理解。
[:]
- > 返回整个字符串。[4 : ]
- > 返回从索引4
到最后一个索引的子字符串。[ : 8]
- > 返回从索引0
到索引7
的子字符串。[2 : 7]
- > 返回从索引2
到索引6
的子字符串。[4 : -1]
- > 返回从索引4
到倒数第二个索引的子字符串。-1
可用于定义 Python 中的最后一个索引[-6 : -1]
- > 返回从结尾的第六个索引到倒数第二个索引的子字符串。
在 Python 中使用 slice()
构造函数提取子字符串
无需在括号内提及索引,我们可以使用 slice()
构造函数来创建 slice
对象,以对字符串或任何其他序列(如列表或元组)进行切片。
slice(start, stop, step)
构造函数接受三个参数,即 start
,stop
和 step
。它们的含义与上面解释的完全相同。
与方括号表示法相比,切片
的工作方式略有不同。切片对象放在字符串变量括号内,例如 myString[<'slice' object>]
。
如果将单个整数值(例如 x
)提供给 slice()
构造函数,并进一步用于索引切片,则会检索从索引 0
到索引 x - 1
的子字符串。请参考以下代码。
myString = "Mississippi"
slice1 = slice(3)
slice2 = slice(4)
slice3 = slice(0, 8)
slice4 = slice(2, 7)
slice5 = slice(4, -1)
slice6 = slice(-6, -1)
print(myString[slice1])
print(myString[slice2])
print(myString[slice3])
print(myString[slice4])
print(myString[slice5])
print(myString[slice6])
输出:
Mis
Miss
Mississi
ssiss
issipp
ssipp
收到的输出是不言自明的。索引遵循与括号符号定义相同的规则。
在 Python 中使用正则表达式提取子字符串
对于正则表达式,我们将使用 Python 的内置包 re
。
import re
string = "123AAAMississippiZZZ123"
try:
found = re.search('AAA(.+?)ZZZ', string).group(1)
print(found)
except AttributeError:
pass
输出:
Mississippi
在上面的代码中,search()
函数搜索在传递的字符串中作为参数提供的模式的第一个位置。它返回一个 Match
对象。Match
对象具有许多定义输出的属性,例如子字符串的 span
或子字符串的开始和结束索引。
print(dir(re.search('AAA(.+?)ZZZ', string)))
将输出 Match
对象的所有属性。请注意,某些属性可能会丢失,因为使用 dir()
时会调用 __dir__()
方法,并且此方法返回所有属性的列表。而且此方法是可编辑的或可重写的。
相关文章
Django 中的 Slug
发布时间:2023/05/04 浏览次数:173 分类:Python
-
本篇文章旨在定义一个 slug 以及我们如何使用 slug 字段在 Python 中使用 Django 获得独特的帖子。
在 Django 中按降序过滤查询集中的项目
发布时间:2023/05/04 浏览次数:157 分类:Python
-
在这个讲解中,学习如何借助 Django 中的 order_by() 方法按降序过滤出查询集中的项目。
Django ALLOWED_HOSTS 介绍
发布时间:2023/05/04 浏览次数:181 分类:Python
-
本文展示了如何创建您的 Django 网站,为公开发布做好准备,如何设置 ALLOWED_HOSTS 以及如何在使用 Django 进行 Web 部署期间修复预期的主要问题。
Django 中的 Select_related 方法
发布时间:2023/05/04 浏览次数:129 分类:Python
-
本文介绍了什么是查询集,如何处理这些查询以及我们如何利用 select_related() 方法来过滤 Django 中相关模型的查询。
使用 Post 请求将数据发送到 Django 服务器
发布时间:2023/05/04 浏览次数:159 分类:Python
-
在这篇关于Django的讲解中,我们简要介绍了post和get请求以及如何在Django中用post实现CSRF token。
Django 返回 JSON
发布时间:2023/05/04 浏览次数:106 分类:Python
-
在与我们的讨论中,我们简要介绍了 JSON 格式,并讨论了如何借助 Django 中的 JsonResponse 类将数据返回为 JSON 格式。
在 Django 中创建对象
发布时间:2023/05/04 浏览次数:59 分类:Python
-
本文的目的是解释什么是模型以及如何使用 create() 方法创建对象,并了解如何在 Django 中使用 save() 方法。
在 Django 中为多项选择创建字段
发布时间:2023/05/04 浏览次数:75 分类:Python
-
在本文中,我们将着眼于为多项选择创建一个字段,并向您展示如何允许用户在 Django 中进行多项选择。