Python 将字符串拆分为特定长度的组
我想知道用Python将字符串(如Python 将字符串拆分为特定长度的组,python,list,Python,List,我想知道用Python将字符串(如“abcdefghijklmnopqrstuvwxyz”拆分为一组2(将字符串拆分为:[“ab”、“bc”、“cd”…“yz]”)的最佳方法是什么 或者3人一组:将字符串拆分为[“abc”、“bcd”、“cde”、…“xyz”] 谢谢!这是一行: def split_by_len(text, chunksize): return [text[i:(i+chunksize)] for i in range(len(text)-chunksize+1)]
“abcdefghijklmnopqrstuvwxyz”
拆分为一组2(将字符串拆分为:[“ab”、“bc”、“cd”…“yz]”)的最佳方法是什么
或者3人一组:将字符串拆分为[“abc”、“bcd”、“cde”、…“xyz”]
谢谢!这是一行:
def split_by_len(text, chunksize):
return [text[i:(i+chunksize)] for i in range(len(text)-chunksize+1)]
这里有一个适用于任何iterable的
>>> from itertools import tee, izip, islice
>>> chunksize = 2
>>> s = 'abcdefghijklmnopqrstuvwxyz'
>>> t = tee(s, chunksize)
>>> for i, j in enumerate(t):
... next(islice(j, i, i), None)
...
>>> ["".join(k) for k in izip(*t)]
['ab', 'bc', 'cd', 'de', 'ef', 'fg', 'gh', 'hi', 'ij', 'jk', 'kl', 'lm', 'mn', 'no', 'op', 'pq', 'qr', 'rs', 'st', 'tu', 'uv', 'vw', 'wx', 'xy', 'yz']
如果s
始终是一个str
,这就更直截了当了
>>> [s[i: i + chunksize] for i in range(len(s) + 1 - chunksize)]
['ab', 'bc', 'cd', 'de', 'ef', 'fg', 'gh', 'hi', 'ij', 'jk', 'kl', 'lm', 'mn', 'no', 'op', 'pq', 'qr', 'rs', 'st', 'tu', 'uv', 'vw', 'wx', 'xy', 'yz']
我不会用str
作为名字,因为它是一个内置的。可能text
是一个更好的名字。不,OP想要[“ab”,“bc”,“cd”,“yz]
,而不是[“ab”,“cd”,“ef”,“yz]
。对于三胞胎,你会得到:[“abc”,“def”,“ghi”,“jkl”,“mno”,“pqr”,“stu”,“vwx”,“yz”]
…最后一个元素太短。@jamylak,OP要求的组是overlapping@gnibbler同意,我看到的是一个幻觉示例我刚刚意识到我的方法基本上与你的方法相同,只是我的设置类似于pairwise
>>> from itertools import tee, izip, islice
>>> chunksize = 2
>>> s = 'abcdefghijklmnopqrstuvwxyz'
>>> t = tee(s, chunksize)
>>> for i, j in enumerate(t):
... next(islice(j, i, i), None)
...
>>> ["".join(k) for k in izip(*t)]
['ab', 'bc', 'cd', 'de', 'ef', 'fg', 'gh', 'hi', 'ij', 'jk', 'kl', 'lm', 'mn', 'no', 'op', 'pq', 'qr', 'rs', 'st', 'tu', 'uv', 'vw', 'wx', 'xy', 'yz']
>>> [s[i: i + chunksize] for i in range(len(s) + 1 - chunksize)]
['ab', 'bc', 'cd', 'de', 'ef', 'fg', 'gh', 'hi', 'ij', 'jk', 'kl', 'lm', 'mn', 'no', 'op', 'pq', 'qr', 'rs', 'st', 'tu', 'uv', 'vw', 'wx', 'xy', 'yz']