2013-05-29 88 views
1

我怎麼沒看到"Too many values to unpack" Exception適用於我的問題,如果它不請解釋蟒蛇誤差值過多解壓

回溯:

c:\***>python graphJSON.py 
Traceback (most recent call last): 
    File "graphJSON.py", line 17, in <module> 
    for region, four, one, two, three, threep in rows: 
ValueError: too many values to unpack 

我遇到這個值過多錯誤簡單的代碼並不能確定問題是什麼:錯誤來自for循環。我收到一條消息說,之前已經有人問過這個問題,答案完全不清楚!

rows = csv.reader(open("graph.csv", "rb")) 

# Init the the lists that will store our data 
regions = [] 
fourHrs = [] 
oneDay = [] 
twoDay = [] 
threeDay = [] 
plusThreeDay = [] 

# Iterate through all the rows in our CSV 
for region, four, one, two, three, threep in rows: 

     regions = regions + [region] 
     fourHrs = fourHrs + [four] 
     oneDay = oneDay + [one] 
     twoDay = twoDay + [two] 
     threeDay = threeDay + [three] 
     plusThreeDay = plusThreeDay + [threep] 

# Format the output 
output = {"data":[{"Regions":regions}, 
    {"Four Hours":fourHrs}, 
    {"One Day":oneDay}, 
    {"Two Days":twoDay}, 
    {"Three Days":threeDay}, 
    {"More than Three Days":plusThreeDay} 
    ]} 

生成JSON文件 json_file =打開( 「graph.json」, 「W」) 傳入json.dump(輸出,json_file) 數據在CSV樣子:

First 28 25 10 2 7 
Second 51 17 8 5 15 
Third 38 33 24 7 19 

已回答:事實證明問題出在CSV上,它刪除了一個階段的更多列,但是,我認爲在Excel中,參考不會被完全刪除。所以,從重做的CSV從它的工作!

+2

你應該粘貼確切的回溯。 – djc

+1

'rows'是整個文件的迭代器。您試圖將所有行解壓縮,每個都放入1個變量中。你有太多的行要做,而不是你想要做的。 – geoffspear

+0

Wooble,這不可能是問題,因爲我之前解包的數量遠遠超過此數 –

回答

0

這很可能是因爲您的CSV文件中有一行或多行的字段少於6個。 Tuple解包用於將從CSV文件迭代器返回的行解壓縮到您在for循環頭部列出的六個變量名稱;這個錯誤對我來說很有意義!

3

首先,正如@Wooble指出的那樣,您必須在csv文件中的每一行上循環顯示,而不是通過csv文件本身。

一旦做到這一點,除了將由行造成的:

for region, four, one, two, three, threep in rows: 

您可以通過異常回溯確認。

問題是造成的,因爲rows具有比在其中代碼被設置它擴大目標項目更少或更多項:

region, four, one, two, three, threep 

即更少/多於6項。

+0

我已經解壓csv的次數比這個大很多倍。所以這絕對不是問題 –