来自不同布局的数据文件列表中的Python列表

问题描述:

我有点卡在这里。我想读取数据文件在Python 3 我要让名单来自不同布局的数据文件列表中的Python列表

*第36行的列表: 每一行多数民众赞成附加到主列表

f = open("a.data","r") 
h = [] 
a = [] 
for word in range(0,797): 
    g = f.readline()  
    h.append(g.strip()) 
    a.append(h) 
    h = [] 
列表

但是从第37行及以后: 我需要一个循环,发生这种情况:

新的生产线是一条白线,通过

下一个4行应该进入一个新的列表“H”和追加到'h' 'A'

的事情是,的ReadLine()行为疯狂的一切我试过

有什么建议?

在此先感谢。

ps将4行中的字符串除以a;

+1

查看您正在尝试阅读的文件会很有帮助。你为什么要迭代到797?你应该使用:open('a.data','r')作为f:g = f.readline()。 – mrCarnivore

+1

“表现疯狂”...? – BlackBear

+0

https://pastebin.com/gHKBx9AN 这是该文件的第一部分。有767个数据点(+36使797) – zorange

试试这个:

import re 

with open('a.data', 'r') as f: 
    lst = re.split(';|\n{1,2}', f.read()) 

length = 36 
lstoflst = [lst[i:i+length] for i in range(0, len(lst)-1, length)] 
print(lstoflst) 

我看了整个列表,在换行和分号分开,使表的列表,列表理解。

请为下一次报告考虑一个更好的数据格式,如果可能,请使用csv。

+0

这很好用! 让我想办法。所以我可以自己做。 非常感谢你 – zorange

+0

我用f.read()读取整个文件之后,你有一个很大的字符串。元素用分号和换行符分隔。 re.split可以生成一个由第一个参数分隔的元素列表。 “;或\ n {1,2}'。 {1,2}是一个或两个换行符的正则表达式量化器。之后,我将长度分别为36的片段分割出来。所以我做了一个for循环,在长度步骤中从0到len(lst)。所以for循环生成i:0,36,72 ...之后,我将n个元素放入列表中,外部[]生成列表列表 –

+0

这对我来说都很清楚。我只是不明白1或2行。 – zorange