我有一个包含大量数据的文本文件,如下所示:
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)
如何更改此选项,以便“行”现在只是文件的特定部分?
答案 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 = []