2012-04-26 12 views
1

5行ブロックで構成されたテキストファイルを取り込み、テキスト全体をこれらのブロックに分割して別々に処理するプログラムを作成しようとしています。私が使用しようとしている瞬間に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 

は、私を許しなさい!私は、chunk5の行の中で、何かが欠けているかのように感じています。これは、私がどのチャンクを使っているかを指定します。

テキスト内のすべてのチャンクで終了するまで、どのようにプログラムを各チャンクに渡すこともできますか?

+0

へのアクセスを残しておきますか! –

+0

ああ、それが再び嘘に分割される理由は、最終的に5行の各塊に、それぞれの行の単語がお互いに対応する行1と2のリストを作成するためです。その後、それらをキーと値の一致する辞書に入れて、テキスト全体の大きな辞書に追加します。 – user1359892

+0

@user:その場合、 'text'を分割したくありません。 'lines [0]'と 'lines [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) 

グループそれ塊にし、その後は再びラインに分割なぜ私はチャンクサイズのparametization、残り

+1

また、[ここ](http://docs.python.org/library/itertools.html#recipes)の 'grouper'関数もチェックしてください。短く、一時的なリストを使用しません。 –

関連する問題