python从一行中的文件加载数据

时间:2014-05-15 16:02:15

标签: python map itertools

我在这样的文件中有一些数据:

18499 0.00822792
14606 0.00778273
3926 0.00287178
2013 0.00130196
3053 0.000829384
16320 0.00249749

我想在一行中加载和解析python中的数据,这就是我现在写的:

with open(input_file) as f:
    data = f.read()
data = [line.split() for line in data.split('\n') if line]
x = list(map((lambda x:float(x[0])), data))
y = list(map((lambda x:float(x[1])), data))

所以我的目标是拥有类似的东西:

x, y = ....

3 个答案:

答案 0 :(得分:2)

with open(input_file) as f:
    x,y = zip(*[map(float,line.split()) for line in f])
print x
print y

我想我的括号在那里平衡了...但是因为你不能意味着你应该......

[edit]修改了实际工作的代码......

答案 1 :(得分:2)

这个怎么样?

xy = numpy.loadtxt('input_file.txt');
x, y = xy[:, 0], xy[:, 1]

答案 2 :(得分:0)

>>> from itertools import izip
>>> x, y = map(list, izip(*(line.split() for line in open(input_file) if line)))
>>> x
['18499', '14606', '3926', '2013', '3053', '16320']
>>> y
['0.00822792', '0.00778273', '0.00287178', '0.00130196', '0.000829384', '0.00249749']