Python只解析文本文件

时间:2017-08-25 20:14:45

标签: python parsing readfile extraction

我有一个包含大量数据的文本文件,如下所示:

logstart . . .
(chunk of data)
logend . . .
logstart . . .
(chunk of data)
logend . . .
times
logstart . . .
(chunk of data)
logend . . .
times
logstart . . .
(chunk of data)
logend . . .

我希望我的Python代码打开文件并读取数据块,当且仅当在它的“logend”下面有与之相关的“时间”时。如果没有那个时间块我想让它忽略它。当它读取正确的数据块时,我也希望它读取与之相关的时间。

在我意识到我只需要提取那些特定部分(将整个文本文件保存为“行”)之前,这就是我所拥有的:

lines = []
with open(filename, 'rt') as in_file:
    for line in in_file:
        lines.append(line)

如何更改此选项,以便“行”现在只是文件的特定部分?

2 个答案:

答案 0 :(得分:2)

这样的事情:

lines = []
with open(filename, 'rt') as in_file:
    chunk = []
    for line in in_file:
        chunk.append(line)
        if(line.find('times')>=0):
            lines.extend(chunk)
        if(line.find('logstart')>=0):
            chunk = []

答案 1 :(得分:0)

你可以通过跟踪一个小状态来做到这一点。

lines = []
with open(filename, 'rt') as in_file:
    in_log = False
    save = []
    for line in in_file:
        if 'logend' in line:
            in_log = False
        if in_log:
            save.append(line)
        if 'times' in line:
            save.append(line)
            lines.extend(save)
        elif 'logstart' in line:
            in_log = True
            save = []