Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将文本分为5行,然后逐一处理_Python_Loops_Chunking - Fatal编程技术网

Python 将文本分为5行,然后逐一处理

Python 将文本分为5行,然后逐一处理,python,loops,chunking,Python,Loops,Chunking,我正在尝试编写一个程序,将一个文本文件组织成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行块,并将整个文本分割成这些块,分别处理

目前我正在尝试使用:

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缺少了一些东西,这些行将指定我正在使用的块


我如何让程序检查每个块,直到它也处理完文本中的所有块

我总是喜欢发电机解决这样的问题:

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)

我将保留区块大小的参数化和访问剩余部分

为什么将其分组,然后再次将其拆分为行?啊,之所以再次将其拆分为谎言,是因为最终在5行的每个区块中,我创建了一个列表,列出了第1行和第2行,其中这些行中的每个单词都相互对应。然后,我将它们压缩到一个包含匹配键和值的字典中,以添加到整个文本的更大字典中。@用户:在这种情况下,您不想拆分
文本。可能您想拆分
行[0]
行[1]
或其他什么。还可以从中检查
grouper
功能。它比较短,不使用临时列表。