Python:将Textfile解析为块

时间:2017-01-18 11:22:53

标签: python python-2.7 parsing text-files

我使用Reading data blocks from a file in Python中的以下示例,但我遇到了问题,它总是忽略文本文件中的第一个文本块。

我已经对原始SO问题中的脚本进行了一些更改并运行但始终通过返回文本文件中的第二个块然后是第三个块来启动,第一个块永远不会返回。

非常感谢任何帮助。

def read_blocks(input_file, i, j):
    empty_lines = 0
    blocks = []
    for line in open(input_file):
        # Check for empty/commented lines
        if not line or line == '\n':
            # If 1st one: new block
            if empty_lines == 0:
                blocks.append([])
                blocks[-1].append(line)
            empty_lines += 1
        # Non empty line: add line in current(last) block
        else:
            empty_lines = 0
            blocks[-1].append(line)
    return blocks[i:j + 1]

for block in read_blocks("C:\\test_file.txt", 1, 1):
    print '-> block'
    for line in block:
        print line

文字档案

Block: 1
Block: 1.2
Block: 1.3

Block: 2
Block: 2.1
Block: 2.2
Block: 2.3

Block: 3
Block: 3.1

1 个答案:

答案 0 :(得分:0)

所有排序,结果证明这是一个愚蠢的错误。我正在向参数read_blocks传递1到i,这忽略了块'0',修复是:

for block in read_blocks("C:\\test_file.txt", 0, 1):
    print '-> block'
    for line in block:
        print line