你没有分享很多,但很清楚的是:
- 你可以以某种方式区分一条重要的线和一条不重要的线;
- 您正在阅读文件的每一行
- 您希望将连续的“重要”结果组合在一起
循环文件:
with open('myfile.txt', 'r') as f:
for line in f:
# do something with `line`
您可以收集列表中重要的行,并且每当您到达不重要的行或文件末尾时,如果该列表中有行,则将其添加到结果中。
把所有东西放在一起:
def is_important(line):
return 'important' in line.split() # replace with an actual test
result = []
with open('myfile.txt', 'r') as f:
important = []
for line in f:
if is_important(line):
important.append(line)
elif important:
result.append(important)
important = []
# done reading, add remaining important lines to result
if important:
result.append(important)
print(result)
此代码适用于您的示例,只需更改is_important为真正有意义。
请注意,示例代码将在每行末尾包含换行符 - 有多种方法可以摆脱它,具体取决于您是要一次读取整个文件还是一次读取一行。自己应该不难弄清楚。
如果您正在寻找其中一种简短但难以阅读的解决方案:
from itertools import groupby
def is_important(line):
return 'important' in line.split() # replace with an actual test
result = [list(x) for c, x in groupby(open('myfile.txt', 'r').readlines(), lambda x: is_important(x)) if c]
print(result)