0

listsを含むを持っているので、空( ) を含む各ポイントでstringを分割したいと思います。liststring''

['this', 'is', '', 'an', 'example']

なるべき

[['this', 'is'], ['an', 'example']]

私はこれを行うジェネレータを書きました:

def split(it, delimiter):
    it = iter(it)
    buffer = []
    while True:
        element = next(it)
        if element != delimiter:
            buffer.append(element)
        elif buffer:
            yield buffer
            buffer = []

これはかなり一般的に見えるので、似たような機能や関連するパターンをitertoolsどこかで見逃していないかと思っていました...?

4

2 に答える 2

3
>>> from itertools import groupby
>>> words = ['this', 'is', '', 'an', 'example']
>>> [list(g) for k, g in groupby(words, ''.__ne__) if k]
[['this', 'is'], ['an', 'example']]
>>> [list(g) for k, g in groupby(words, 'is'.__ne__) if k]
[['this'], ['', 'an', 'example']]
于 2013-05-03T13:10:02.577 に答える
0

listを単純にスライスすることができます。必要なのは区切り文字のインデックスを見つけることだけです。

于 2013-05-03T13:11:36.767 に答える