Python 从输入文件创建列表列表
我有一个每行有多个值的输入文件,例如:Python 从输入文件创建列表列表,python,list,Python,List,我有一个每行有多个值的输入文件,例如: 1 3 5 2 6 1 8 9 2 我想将这些数字导入列表列表,以便每一行都是列表列表中的一个列表: data=[[1 3 5]、[2 6 1]、[8 9 2]]etc 有没有一个简单的方法可以做到这一点?我已经看过了readline,readlines,lines,但仍然不确定如何创建这种格式。最后,我希望对每个列表执行相同的操作集,因此这种格式似乎是最合理的 如果您的数据看起来与您呈现的数据完全一样,请尝试以下操作: data = [
1 3 5
2 6 1
8 9 2
我想将这些数字导入列表列表,以便每一行都是列表列表中的一个列表:
data=[[1 3 5]、[2 6 1]、[8 9 2]]
etc
有没有一个简单的方法可以做到这一点?我已经看过了
readline
,readlines
,lines
,但仍然不确定如何创建这种格式。最后,我希望对每个列表执行相同的操作集,因此这种格式似乎是最合理的 如果您的数据看起来与您呈现的数据完全一样,请尝试以下操作:
data = []
with open('filename.txt', 'r') as f:
for line in f:
if not line.strip(): continue #skips blank lines
data.append(map(int, line.strip().split(" "))) #or .split()
此外,如果要对每一行执行相同的数字操作,可能需要尝试numpy
In [1]: import numpy as np
In [2]: np.genfromtxt('filename.txt')
Out[2]:
array([[ 1., 3., 5.],
[ 2., 6., 1.],
[ 8., 9., 2.]])
In [3]: x = np.genfromtxt('filename.txt')
In [4]: x.mean(axis=1)
Out[4]: array([ 3., 3., 6.333333333333333])
我会:
data = [map(int, line.split()) for line in fname if line.strip()]
data=[map(int,l.split(“”))表示fh.readlines()中的l
?@g.d.d.c,既酷又简洁,但是如果l在生成器末尾,您不应该添加一个?根据OP的问题,文件中有空行。@BorrajaX可以工作,或者您可以筛选(bool,fh.readlines())
。(这是一个列表理解,而不是生成器。)哇!这是正确的!更酷@两位炼金术士!!:-DWhy拆分(“”
?它已经在空格上分开了,如果两位数之间有多个空格,这个解决方案就不起作用了。(没有争论,这对任何数量的空白都是好的。)足够公平,尽管我发现最好是明确的。这也可能会提醒OP文件中的格式问题。