假设我有一个字符串,像这样:Python的itertools GROUPBY不分组如我所料
st='''Line 1
Line 2
Line 3
Line 4
Line 5
Line 6
Line 7
Line 8
Line 9
Line 10
Line 11
Line 12
Line 13
Line 14'''
# may be really big...
现在假设我想用空行划分一个英雄联盟:
[['Line 1', 'Line 2', 'Line 3', 'Line 4'],
['Line 5', 'Line 6'],
['Line 7', 'Line 8 ', 'Line 9'],
['Line 10', 'Line 11', 'Line 12', 'Line 13', 'Line 14']]
我知道我可以使用正则表达式分割创建LoL:
[[x] for x in re.split(r'^\s*\n',st,flags=re.MULTILINE)]
但是,我试图用非正则表达式Python生成器来创建它。我得到的最接近是这个可怕的事情(包括空白,是不是在所有有效的,我知道...):
result=[]
for sub in (group for key, group in itertools.groupby(st.splitlines(), lambda x: not x.rstrip())):
result.append(list(sub))
print result
一个方向任何提示去?
我有点关闭THIS SO question。
顺便说一句,你最终的循环可以简化为'[ list(group)for _,group in itertools.groupby(st.splitlines(),lambda x:not x.rstrip())]'。 – 2013-02-12 23:32:14