使用stride在python中切割字符串时的标点符号

时间:2018-02-19 09:08:59

标签: python string slice punctuation stride

对于以下代码,为什么答案不是'yoif!'带着感叹号?

>>> s = 'Python is fun!'

>>> s[1:12:3]

>'yoif'

为什么排除了感叹号,因为它还有一个索引号,如下面的代码所示(从上面继续)?

>>> s[13]

>'!'

5 个答案:

答案 0 :(得分:0)

因为这就是切片的工作原理。它将选择索引从1开始并以最大12结尾的元素。因此,您看到的唯一元素是索引1,4,7和10. 13是下一步,但因为它高于12所以它不会秀。

答案 1 :(得分:0)

您的问题本身就是答案。您正在从第1位切换到第12位(不包括在内)。所以你将获得第11位的元素。

如果您希望!将值从12更改为14.请参阅下面的代码。

s = 'Python is fun!'
print(s[1:14:3])

输出:

'yoif!'

答案 2 :(得分:0)

s = 'Python is fun!'

s[1:12]只返回字符串'ython is fu',因此3的步幅无法到达!

在哪里

s[1:14]将字符串返回'ython is fun!'

s[1:14:3] 

输出:'yoif!'

@Chris_Rands对问题的评论中的linked

a[start:end] # items start through end-1
a[start:]    # items start through the rest of the array
a[:end]      # items from the beginning through end-1
a[:]         # a copy of the whole array

a[start:end:step] # start through not past end, by step

答案 3 :(得分:0)

您将1定义为切片字符串的开头,最后将12定义为3作为步骤。这是切片的一般结构:[start:end:step]

1的开头和12的结尾,您的字符串如下所示:ython is fu

你必须将你的结局设置在正确的位置。因此s[1:14]会打印ython is fun!

当您添加3这样的s[1:14:3]步骤时,您的代码会根据需要打印yoif!

答案 4 :(得分:0)

切片,0索引,形式为[来自:最多但不包括:每个]

要包含最后一个元素,请将其从切片中排除,并将该部分留空。

>>> "Python is fun!"[1::3] 'yoif!'

离开'离开'空使它从头开始。

离开'离开'空的让它走到尽头。

"Python is fun!"[:] 'Python is fun!'