次のような文字列があるとします。
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...
ここで、空白行でグループ化された LoL が必要だとします。
[['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
進むべき方向についてのヒントはありますか?
私はこのSOの質問をやや抑えています。