1

5行のブロックで構成されたテキストファイルを取り、テキスト全体をこれらのブロックにスライスして個別に作業するプログラムを作成しようとしています。

現時点で私は使用しようとしています:

text = open(filename).readlines()
chunk5 = zip(*(iter(text),) * 5)

for lines in chunk5:
    line = re.split('\n', text) # split a chunk into lines by line break
    # ...more statements

全くの初心者で申し訳ありませんが、この方法でよろしいでしょうか?作業しているチャンクを指定するチャンク5の行の行で、チャンク5に何かが欠けているように感じます。

テキスト内のすべてのチャンクも終了するまで、プログラムに各チャンクを実行させるにはどうすればよいですか?

4

1 に答える 1

0

私は常に、次のような問題のジェネレーターが大好きです。

def chunkN(lines, N):
    acc = []
    for line in lines:
        acc.append(line)
        if len(acc) == N:
             yield acc
             acc = []
    if len(acc): # remainder
        yield acc

# Now you can do this...
for chunk in chunkN(open('myfile', 'r'), 5):
    print '-' * 80
    print ''.join(chunk)

チャンクサイズのパラメータ化と残りへのアクセスはそのままにします

于 2012-04-26T23:24:43.853 に答える