如何每3个索引切一个字符串?

Fra*_*cis 11 python string slice

我正在使用Python为我工作的实验室编程.如何切出给定字符串中的每3个字符并将其附加到列表中?

即XXXxxxXXXxxxXXXxxxXXXxxxXXX(其中X或x是任何给定的字母)

string = 'XXXxxxXXXxxxXXXxxxXXXxxxXXX'
mylist = []

for x in string:
    string[?:?:?]
    mylist.append(string)
Run Code Online (Sandbox Code Playgroud)

我希望列表看起来像这样:['XXX','xxx','XXX','xxx','XXX'......等等]

有任何想法吗?

Dav*_*ver 20

总之,你不能.

更长的时间,你需要编写自己的函数,可能:

def split(str, num):
    return [ str[start:start+num] for start in range(0, len(str), num) ]
Run Code Online (Sandbox Code Playgroud)

例如:

>>> split("xxxXXX", 3)
['xxx', 'XXX']
>>> split("xxxXXXxx", 3)
['xxx', 'XXX', 'xx']


Joh*_*ooy 7

将列表分成3个块并将字符串分成3个块的区别在于re模块使用字符串而不是列表.

如果性能很重要(即您要分割数千个字符串),则应测试各种答案在应用程序中的比较方式

>>> import re
>>> re.findall('...','XXXxxxXXXxxxXXXxxxXXXxxxXXX')
['XXX', 'xxx', 'XXX', 'xxx', 'XXX', 'xxx', 'XXX', 'xxx', 'XXX']

>>> chunksize=3
>>> re.findall('.{%s}'%chunksize,'XXXxxxXXXxxxXXXxxxXXXxxxXXX')
['XXX', 'xxx', 'XXX', 'xxx', 'XXX', 'xxx', 'XXX', 'xxx', 'XXX']
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为.在正则表达式中"匹配任何字符".
.{3}表示"匹配任意3个字符",依此类推