0

次のようなテキスト ファイルを使用しています。(言葉はスウェーデン語です)

['1', 'Denna', '_', 'DET', 'DT', 'UTR|SIN|DEF', '2', 'DT', '_', '_\n']
['2', 'predestination', '_', 'NOUN', 'NN', 'UTR|SIN|IND|NOM', '7', 'SS', '_', '_\n']
['3', 'till', '_', 'ADP', 'PP', '_', '2', 'ET', '_', '_\n']
['4', 'en', '_', 'DET', 'DT', 'UTR|SIN|IND', '6', 'DT', '_', '_\n']
.....

さまざまな長さの約 500 の文があります。各行は 1 つの単語を表します。リストの最初の要素は、文中の単語の位置を示します。

各文のエントリからネストされたリストを作成するプログラムが必要です (各文に 1 つのサブリスト)。すべての新しい文は位置 '1' で始まり、空行で区切られます。現時点では、すべての行が 1 つのリストに含まれています。

私は次のようなことをしたいと思います:

l = []
for line in list:
    if line[0] == '1':
        l.append(line)

... 次に、「1」に達するまですべての行を追加します。ここで、新しいサブリストから始めます。

それを行う方法についていくつかのアイデアはありますか?これを再帰的にするにはどうすればよいですか?

4

1 に答える 1

0

これは自然に再帰的なプロセスではありません。それは反復的です。単純なループが仕事をします。

alla = []
forst = True
for line in list:
    if line[1] == '1':
        # ny mening
        if not forst:
            alla.append(mening)
        forst = False
        mening = []

    mening.append(line)

各追加のトリガーは文の開始であるため、追加する文が 1 つ残っています。その部分はあなたに任せます。:-)

于 2017-01-09T17:38:35.127 に答える