2014-09-21 70 views
0

嗨,我試圖操縱CSV文件,如下對象實例混亂

import csv 
data=csv.reader(open('data.csv', 'rb')) 
a= [row for row in data] 
print a 

代碼的輸出是(逗號spearated行 - >以列表格式):

[['aaaaa', '1234234'], ['bbbb', '2343536'], ['cccc', '5675675'], ['dddd', '2344234'], ['eeee', '5435324'], ['fffffff', '4353442']] 

當我使用時,我會得到空值

print [row for row in data] 

我會幫助對這種混亂有意見。謝謝

+0

適合我,無法重現問題。 – wwii 2014-09-21 11:59:00

回答

0

csv.reader返回一個迭代器,它僅適用於一次遍歷數據。您可能試圖通過兩次迭代data;第二次,interator中沒有剩餘內容,所以

print [row for row in data] 

打印一個空列表。

如果你想通過data迭代一次以上,並有足夠的內存,你可以轉換data到一個列表:

data = list(csv.reader(open('data.csv', 'rb'))) 

如果你沒有足夠的內存,您將不得不解析再次CSV。

+0

我的意思是當我不指定變量'a'來獲取數據,而是直接打印爲'print [row for data in data]'我得到null。 – ceasif 2014-09-21 11:27:06

+2

從終端運行您的代碼作爲腳本。不要使用IDE或交互式會話。你還看到問題嗎? – unutbu 2014-09-21 12:08:51