【问题标题】:Python: Parsing Textfile into BlocksPython:将文本文件解析为块
【发布时间】:2017-01-18 11:22:52
【问题描述】:

我正在使用来自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

【问题讨论】:

    标签: python python-2.7 parsing text-files


    【解决方案1】:

    所有排序,结果证明这是一个愚蠢的错误。我将 1 传递给 read_blocks 的参数 i,它忽略了块 '0',解决方法是:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-08
      • 1970-01-01
      • 1970-01-01
      • 2018-04-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多