这是一般的;-)方法:
f = open("diaryfile", "r")body = []for line in f: if your_regexp.match(line): if body: write_one(body) body = [] body.append(line)if body: write_one(body)f.close()简而言之,您只需将所有行追加到列表(
body)。当找到一条神奇的线时,您打电话
write_one()来转储您到目前为止所拥有的,并清除列表。该文件的最后一个块是一个特殊情况,因为您不会再找到神奇的正则表达式。这样,您就可以在循环后再次转储您拥有的东西。
您可以在
write_one()函数中进行所需的任何转换。例如,听起来您想从输入的时间戳行中删除开头的“#”。很好-可以,例如
body[0] = body[0][2:]
在中
write_one。所有行都可以通过例如
with open(file_name_extracted_from_body_goes_here, "w") as f: f.writelines(body)
您可能要先检查文件是否不存在!如果像我的日记一样,许多条目的第一行将是“腐烂的日子”。;-)



