python中文本文件内容的读取与分组

2024-09-24 08:38:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个用Python读取的文本文件

目录

line1
line2

line3
line4
line5

line6

....

阅读:

with open(path, encoding="utf8", errors='ignore') as f1:
   contents = f1.readlines()
   print (contents)

操作:

[line1, line2,.... line6]

但我想读的内容是基于空格分隔的行。你知道吗

预期操作:

[[line1, line2], [line3,line4,line5], [line6]]

有没有比读取文件的全部内容、遍历列表、然后根据空格进行分组更快捷的方法呢。对这个方法有什么建议吗?你知道吗


Tags: path方法目录withcontentsopenf1空格
1条回答
网友
1楼 · 发布于 2024-09-24 08:38:22

像这样的东西可以满足你的需要:

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']]

或者使用itertools groupby的另一个(不可读)单行程序版本

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)]

相关问题 更多 >