使用python处理此文本文件的大多数pythonic方法

use*_*855 2 python

我有一个包含测试数据的文本文件,如下所示:

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方式是什么?

Cha*_*guy 7

假设你的数据总是在你的例子中的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()])