从每行上有多个数字的文本文件输入数据 - Python

时间:2012-11-28 17:11:43

标签: python input

假设我有一个包含此内容的数据文件:

23 33 45
91 81 414
28 0 4 
7 9 14
8 9 17
1 1 3
38 19 84

如何将其导入列表中,以便每个编号都是自己的项目?

2 个答案:

答案 0 :(得分:0)

您可以使用numpy loadtxt将数据文件读取到numpy数组

  from numpy import loadtxt
  a,b,c = loadtxt("filename", usecols=(0,1,2), unpack=True)

输出

  a = array([23, 91, 28, 7, 8, 1, 38])

答案 1 :(得分:0)

您也可以使用python内置函数,如open file,split和readlines

with open('file.txt') as f:
for line in f:
  a, b, c = map(int, line.split())

另一种方法是

 file                = open(filename)
 file_data           = file.readlines()

但是,输出将是一个字符串列表。 也就是说,列表中的每个元素都代表文件中的一行。 如果使用上面的代码,输出将类似于

 file_data = ['23 33 45', '91 81 414', '28 0 4 ', '7 9 14', '8 9 17', '1 1 3', '38 19 84']

您可能希望它们转换为float或int。 你可以再次使用numpy的fromstring模块

  from numpy import fromstring
  data = [fromstring(i, dtype=float, sep=' ') for i in file_data ]

请注意,我在上面的代码中使用了列表推导(比传统的python for循环更快。)