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

请原谅我,因为我是一个完整的初学者,但这是正确的方法吗?我觉得chunk5 中的行中的chunk5 中缺少一些东西,这些行将指定我正在使用哪个块。

我如何让程序遍历每个块,直到它也完成了文本中的所有块?

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 回答