2014-05-15 97 views
0

我有這樣的一個文件中的一些數據:蟒蛇負載數據

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

我想在一行中加載和分析在蟒蛇的數據,這是我寫的那一刻:

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 = .... 
+0

你現在有什麼問題?如果它有效,並且你只想對你的實現進行審查,請嘗試http://codereview.stackexchange.com – jonrsharpe

+1

'pandas.from_csv('yourpath')。to_csv('pathtosave')'或者沿着這些行的東西。 –

+1

這是可行的,但請注意PEP-0020,特別是「可讀性計數」。 –

回答

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

我想我得到了我的括號平衡有...但只是因爲你可以並不意味着你應該......

[編輯]固定代碼實際工作...

+1

可怕。 [只寫代碼](https://en.wikipedia.org/wiki/Write-only_language)。 –

+0

因此,我同意我的註釋,僅僅因爲你不能表示你應該 –

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'] 
2

怎麼樣這個?

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