我有一个包含测试数据的文本文件,如下所示:
hdr 1
hdr2
hdr3
data1
data2
data3
data1
data2
....
Run Code Online (Sandbox Code Playgroud)
每一行之间都有一个空行.
我需要创建一个包含列表的列表
[[hdr1,hdr2,hdr3],[data1,data2,data3],[data1,data2,...]
Run Code Online (Sandbox Code Playgroud)
这样做的简洁,pythonic方式是什么?
假设你的数据总是在你的例子中的3个块中,你可能会使用itertools,如果你传递相同的迭代器6次,那么你应该最终得到6个字段,其中3个是空行,其他的是你有兴趣的3人小组:
import itertools
arr = []
with open('input.txt') as f:
for field1,blank1,field2,blank2,field3,blank3 in itertools.izip_longest(*[f]*6):
arr.append([field1,field2,field3])
Run Code Online (Sandbox Code Playgroud)
(灵感来自这篇文章)
编辑:你可能需要调用strip()字段,以便不包含任何额外的\n,所以arr.append([field1.strip(),field2.strip(),field3.strip()])