Пусть у меня есть строка, например, так: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) для _, group in itertools.groupby (st.splitlines(), lambda x: not x.rstrip())] '. –