def chunkstring(string, length):
return (string[0+i:length+i] for i in range(0, len(string), length))
此函数使用生成器理解来返回生成器。生成器返回从0 +块的长度的倍数到块的长度+块的长度的倍数切片的字符串。
您可以像列表,元组或字符串-那样遍历生成器for i in chunkstring(s,n):
,或使用将其转换为列表(例如)list(generator)
。生成器比列表更有效地使用内存,因为生成器可以按需生成元素,而不是一次生成所有元素,但是它们缺少某些功能,例如索引。
此生成器最后还包含任何较小的块:
>>> list(chunkstring("abcdefghijklmnopqrstuvwxyz", 5))
['abcde', 'fghij', 'klmno', 'pqrst', 'uvwxy', 'z']
用法示例:
text = """This is the first line.
This is the second line.
The line below is true.
The line above is false.
A short line.
A very very very very very very very very very long line.
A self-referential line.
The last line.
"""
lines = (i.strip() for i in text.splitlines())
for line in lines:
for chunk in chunkstring(line, 16):
print(chunk)