Python 字符串切片
在Python中,字符串是一个有序的Unicode字符序列。字符串中的每个字符在序列中都有一个唯一的索引。索引从0开始。字符串中的第一个字符具有位置索引0。索引随着字符串的末尾而递增。
如果将字符串变量声明为var=”HELLO PYTHON”,字符串中每个字符的索引如下所示 –
Python允许您通过索引访问字符串中的任何单个字符。在这种情况下,0是字符串的下限,11是上限。因此,var[0]返回H,var[6]返回P。如果方括号中的索引超过了上限,Python会引发IndexError。
Python序列类型(以及字符串对象)的一个独特特性是它也具有负索引。在上面的例子中,使用了正索引方案,其中索引从左到右递增。在负索引的情况下,末尾的字符具有-1索引,索引从右到左递减,因此第一个字符H具有-12索引。
让我们使用负索引来获取 N、Y 和 H 字符。
再次提醒,如果索引超出范围,则会遇到IndexError。
因此,我们可以使用正向或反向索引来从字符串中获取字符。
在Python中,字符串是不可变对象。如果对象被存储在某个内存位置后无法进行原地修改,那么它就是不可变的。你可以通过索引来获取字符串中的任何字符,但是无法用另一个字符替换它。在我们的例子中,字符Y在HELLO PYTHON中的索引为7。试着将Y替换为y,看看会发生什么。
将会生成以下输出:
TypeError是由于字符串是不可变的。
Python将“:”定义为字符串切片运算符。它返回原始字符串的子字符串。其一般用法是−
“:” 运算符需要两个整数操作数(两个操作数都可以省略,我们将在后面的例子中看到)。第一个操作数 x 是所需切片的第一个字符的索引。第二个操作数 y 是所需字符串中最后一个字符的索引的下一个位置。所以 var(x:y] 可以从原始字符串中将字符从第 x 位置到 (y-1)位置分离出来。
它将产生以下输出 –
负索引也可以用于切片。
将产生以下 输出 −
Python的切片操作符的两个操作数都是可选的。第一个操作数默认为零,这意味着如果我们不提供第一个操作数,切片从第0个索引开始切割字符,即第一个字符。它将最左边的子字符串切割到”y-1″个字符。
它会生成以下输出 –
同样地,y操作数也是可选的。默认情况下,它是“-1”,这意味着字符串将从第x个位置开始切片,一直到字符串末尾。
将产生以下输出 −
自然地,如果两个操作数都未使用,则切片将等于原始字符串。这是因为”x”默认为0,”y”默认为最后一个索引+1(或-1)。
它将生成以下 输出 -
左操作数必须小于右操作数,以得到原始字符串的子串。如果左操作数大于右操作数,Python不会引发任何错误,但返回一个空字符串。
它将产生以下 输出 −
切片会返回一个新的字符串。你可以对切割后的字符串进行字符串操作,比如拼接或者再次切割。
它将产生以下 输出 –