python中的文件流处理

时间:2015-02-19 17:30:29

标签: python

我有一个数据文件,其中每个" row"由\n\n\n分隔。我的解决方案是首先通过啜饮文件,然后拆分行来隔离这些行:

 for row in slurped_file.split('\n\n\n'):
    ...

是否有" awk - 喜欢"我可以采取的方法将文件解析为Python 2.7.9中的流,并根据给定的字符串值拆分行?感谢。

1 个答案:

答案 0 :(得分:1)

所以标准库中没有这样的东西。但我们可以制作一个自定义生成器来迭代这些记录:

def chunk_iterator(iterable):
    chunk = []
    empty_lines = 0
    for line in iterable:
        chunk.append(line)
        if line == '\n':
            empty_lines += 1
            if empty_lines == 2:
                yield ''.join(chunk[:-2])
                empty_lines, chunk = 0, []
        else:
            empty_lines = 0

    yield ''.join(chunk)

用作:

with open('filename') as f:
    for chunk in chunk_iterator(f):
        ...

这将使用CPython中用C语言编写的文件的每行迭代,因此比一般记录分隔符解决方案更快。