关于python:将字符串拆分为一个列表,其中项的长度相等

Split string into a list, with items of equal length

本问题已经有最佳答案,请猛点这里访问。

我有一个字符串(没有空格),需要将它拆分为一个具有相同长度的项的列表。我知道split()方法,但据我所知,它只通过空格而不是长度分割。

我想做的是这样的事情:

1
2
3
4
5
string ="abcdefghijklmnopqrstuvwx"
string = string.Split(0 - 3)
print(string)

>>> ["abcd","efgh","ijkl","mnop","qrst","uvwx"]

我考虑过循环浏览列表,但我想知道是否有一个更简单的解决方案?


1
2
>>> [string[start:start+4] for start in xrange(0, len(string), 4)]
['abcd', 'efgh', 'ijkl', 'mnop', 'qrst', 'uvwx']

即使最后一篇文章少于4个字符,它也能工作。


或:

1
map(lambda i: string[i:i+4], xrange(0, len(string), 4))


怎么样:

1
2
3
4
>>> string = 'abcdefghijklmnopqrstuvwx'
>>> map(''.join, zip(*[iter(string)]*4))
['abcd', 'efgh', 'ijkl', 'mnop', 'qrst', 'uvwx']
>>>


使用textwrap标准库模块:

1
2
3
>>> import textwrap
>>> textwrap.wrap('abcdefghijklmnopq', 4)
['abcd', 'efgh', 'ijkl', 'mnop', 'q']

编辑:废话,这对空间不合适。仍然把答案留在这里,因为上次我遇到你的问题时,我实际上是在尝试包装文本,所以其他人可能也有同样的问题。