|
概述Python引入了多种字符串操作方法,允许获取字符串子字符串。其中一个操作称为Slice。这个运算符非常通用且语法优雅,只需几个参数,就可以从字符串中获取许多子字符串组合。python编程中的字符串切片就是通过从“开始”索引到“停止”索引切片来从给定字符串中获取子字符串。切片()Python为我们提供了一个方法slice(),它创建了一个“slice”对象,其中包含一组“start”和“stop”索引和步长值。具体来说,参数是(开始、停止、步进)。根据Python官方关于python字符串切片的文档:Slice有两种不同的实现方式,即slice有两种重载方法,每种方法都采用两组不同的参数:slice(stop) //起始为0&步长为1切片(开始、停止、步进)start:是必须对其执行切片操作的字符串的起始索引。它确定字符串的切片将从哪里“开始”。stop:是切片的停止索引,'until'必须执行哪个切片操作,即在生成子字符串时排除停止索引。step:这是一个可选参数,用于定义迭代列表时的步骤,即它允许我们跳过元素。两个 slice()实现都返回一个格式为 slice(start,stop,end) 的对象。(检查示例-1)此返回的对象现在可用于对字符串、列表、元组、集合、字节或范围对象进行切片。应用:示例1 –使用slice对象获取子字符串s="Welcometoscalerdocs"s1=slice(6)#takesstartas0automaticallyprint("s1-obj:",s1)print("s1-res:",s[s1])s2=slice(2,8)#usingslice(start,end,step)withoutstepprint("s2-obj:",s2)print("s2-res:",s[s2])s3=slice(1,20,2)#usingslice(start,end,step)withstepprint("s3-obj:",s3)print("s3-res:",s[s3])'运行运行输出s1-obj:slice(None,6,None)s1-res:Welcoms2-obj:slice(2,8,None)s2-res:lcomes3-obj:slice(1,20,2)S3-res:ecmosaeo解释:Slice() 有两个实现,一个具有单个参数,另一个具有三个参数。具有一个参数的实现将“stop”索引作为唯一且必需的参数,而具有三个参数的实现也采用“start”索引、“stop”索引和可选的“step”值。在上面的例子中(在代码片段和输出中检查s1,s2和s3):在s1中:我们首先使用了 slice(),它只接受一个'stop'参数。在输出中,我们收到的子字符串为“Welcom”,因为“start”索引自动设置为“0”,而“stop”设置为6。在s2中:之后,我们使用带有三个参数方法的 slice(),但选择不提供可选的“step”参数。在输出中,我们收到了一个从索引“2”到“7”的子字符串,因为我们将“start”作为“2”提供,“stop”作为“8”。在s3中:我们也用'step'实现 slice()。因为我们提供的“步骤”为2。在输出中,我们通过从索引1到20前进到每个2个元素来接收一个子字符串因此,现在很明显,“step”值决定了迭代器(在形成子字符串时)将以什么值前进或递增。注意:理解“停止”索引意味着它不会在“此索引”或“之后”停止此索引。执行切片时,它在此索引之前停止。而“start”索引包含在被切片的字符串中。索引语法切片的索引语法是 slice() 的简写或更好的替代品,因为它更容易理解和执行。这是您作为开发人员欣赏的操作和语法之一,并下意识地希望在您的代码中应用,因为它确实是一个很酷的操作!索引语法:字符串[start:stop:step]因此,在这里,我们不是先创建一个切片对象,然后在字符串上实现它,而是直接使用执行相同操作的索引语法。使用索引语法复制Example-1:示例2 –切片的索引语法s="Welcometoscalerdocs"print("s1",s[:6])print("s2",s[2:7])#usingindexingsyntaxforslice(start,end,step)withoutstepprint("s3",s[1:20:2])#usingindexingsyntaxforslice(start,end,step)'运行运行输出:s1Welcoms2lcomes3ecmosaeo注意:“步长”永远不能为零。String[::]=>start=0,stop=字符串长度,step=1。String[2::]=>start=2,stop=字符串长度,step=1字符串[:2:]=>开始=0,停止=2,步长=1String[:6]ORString[1:6]=>是有效的语法,因为“step”是此操作的可选参数。Slice是一个只需要三个参数的操作,而且可以用它做更多的事情。让我们看一些示例,这些示例将解释此运算符的多个用例。使用负指数“开始”和“停止”索引和步长可以分别为负值。但是负指数和负“步骤”对Python中的字符串切片有什么影响呢?让我们来看看。请考虑下图,该图的顶部和底部标记了一个字符串和索引。注意:底部的指数表示负指数。让我们来看看如何使用负索引获取子字符串。假设我们必须获取子字符串刻度。若:S= 欢迎使用缩放器使用负索引获取子字符串的语法为:S[-6:-1] ORsliceObject=slice(-6,-1) =>S[sliceObject](-6个索引从末尾指向第6个元素,-1指向从末尾指向第1个元素)注意:请参阅图1和示例,以了解字符索引映射。示例3–使用负索引和负步长值获取子字符串s="Welcometoscaler"#-xmeansxthelementfromtheend.print("indexingsyntaxwithoutstep:",s[-16:-4])#usingsteptofetchevery2ndcharacterfromstartindexuntilendindexprint("indexingsyntaxwithstep:",s[-16:-4:2])#replicatingabovecodeusingsliceobjectsliceObj=slice(-16,-4)print("sliceobjectwithoutstep:",s[sliceObj])sliceObj=slice(-16,-4,2)print("sliceobjectwithstep:",s[sliceObj])'运行运行输出:indexingsyntaxwithoutstep:elcometoscindexingsyntaxwithstep:ecmossliceobjectwithoutstep:elcometoscsliceobjectwithstep:ecmos示例4–正负指数切片s="Welcometoscaler"s1=s[3:-7]print("positivestartindex,negativeendindex:",s1)#abovesliceoperationcanalsobewrittenass2=s[-14:10]print("negativestartindex,positiveendindex:",s2)'运行运行输出:positivestartindex,negativeendindex:cometonegativestartindex,positiveendindex:cometo在切片中使用负“步长”反转子字符串Python中的字符串切片可以通过多种方式反转字符串。切片是允许我们反转字符串的方法之一。反转字符串时,将“Step”参数视为小于0。注意:倒车时:“step”“stop”。而当不反转时:当“step”>0时,startIndex
|
|