将字符串切成3个具有重叠的组

时间:2015-01-18 19:59:20

标签: python string indexing slice

我一直在尝试将一个字符串切成三组,并带有重叠。

例如,'abcdefg''abc', 'bcd', 'cde', 'def', 'efg'

我目前的代码是:

s = 'abcdefg'
[s[i:i+3] for i in range(0, len(s), 3)]

但这只会让我回复'abc''def''g'

如何更改它以便我可以重叠?我希望它能够为任何字符串长度执行此操作。

1 个答案:

答案 0 :(得分:2)

您可以将列表理解更改为:

>>> [s[i:i+3] for i in range(len(s)-2)]
['abc', 'bcd', 'cde', 'def', 'efg']

目前你正在采取3步(而不是1),所以你没有得到重叠。您还希望在字符串结尾前停止i两个位置(或者您也会获得较短的子字符串'fg''g'),因此请从2开始字符串的长度。