2012-04-26 44 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中的行5中缺少某些內容,這些行會指定正在處理的塊。

我該如何讓程序遍歷每個塊,直到它完成文本中的所有塊?

+0

爲什麼它組成塊,然後再拆分成線? – 2012-04-26 23:17:31

+0

啊,它被再次分裂成謊言的原因是因爲最終在5行的每一塊中,我創建了一個列表行1和列表行2,其中每行中的每個單詞對應於彼此。之後,我將它們壓縮到匹配鍵和值的字典中,以添加到整個文本的較大字典中。 – user1359892 2012-04-26 23:46:40

+0

@user:在這種情況下,您不想分割「文本」。也許你想分割'lines [0]'和'lines [1]'或其他東西。 – 2012-04-27 00:11:08

回答

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) 

我會離開塊大小的參數化和訪問其餘

+1

同時從[這裏](http://docs.python.org/library/itertools.html#recipes)檢查'grouper'函數。它更短,不使用臨時列表。 – 2012-04-26 23:36:49