python中文本文件内容的读取和分组
我有一个用Python读取的文本文件 内容python中文本文件内容的读取和分组,python,Python,我有一个用Python读取的文本文件 内容 line1 line2 line3 line4 line5 line6 .... 阅读: with open(path, encoding="utf8", errors='ignore') as f1: contents = f1.readlines() print (contents) 作品: 但我想读的内容是基于分隔行的空白 预期OP: [[line1, line2], [line3,line4,line5], [line6]
line1
line2
line3
line4
line5
line6
....
阅读:
with open(path, encoding="utf8", errors='ignore') as f1:
contents = f1.readlines()
print (contents)
作品:
但我想读的内容是基于分隔行的空白
预期OP:
[[line1, line2], [line3,line4,line5], [line6]]
有没有一种比读取文件的全部内容迭代列表,然后根据空格进行分组更短的方法。对方法有什么建议吗?像这样的建议可以满足您的需要:
In [8]: result = []
In [9]: with open(path, encoding="utf8", errors='ignore') as fh:
...: group = []
...: for l in fh:
...: l = l.strip()
...: if not l:
...: result.append(group)
...: group = []
...: else:
...: group.append(l)
...: if group:
...: result.append(group)
...:
In [10]: result
Out[10]: [['line1', 'line2'], ['line3', 'line4', 'line5'], ['line6']]
或者使用
In [8]: result = []
In [9]: with open(path, encoding="utf8", errors='ignore') as fh:
...: group = []
...: for l in fh:
...: l = l.strip()
...: if not l:
...: result.append(group)
...: group = []
...: else:
...: group.append(l)
...: if group:
...: result.append(group)
...:
In [10]: result
Out[10]: [['line1', 'line2'], ['line3', 'line4', 'line5'], ['line6']]
from itertools import groupby
[g for g in [list(g) for _, g in groupby(open(path).read().splitlines(), lambda l: bool(l.strip()))] if all(g)]