2014-11-06 61 views
-1

所以這幾乎是一個web報廢程序。我感覺好像已經快要完成了,但我不知道如何解決這個問題!ValueError:解壓縮的值太多(Python)

Traceback (most recent call last): 
    File "AgriMet4.py", line 424, in <module> 
    orig_column = convert(station, webpage, data_type) 
    File "AgriMet4.py", line 244, in convert 
    ag_date, ag_time, ag_data_str = line.split() 
ValueError: too many values to unpack 

這裏有一個被標記的部分:

 # Break line into components 
     ag_date, ag_time, ag_data_str = line.split() 
     ag_datetime = ag_date + " " + ag_time 
     ag_datetime = datetime.datetime.strptime(ag_datetime, "%m/%d/%Y %H:%M") 
     ag_data = float(ag_data_str) 

columns = [] 
for data_type in data_types: 
    webpage = download(station, data_type, effective_begin_date, effective_end_date) 
    orig_column = convert(station, webpage, data_type) 
    std_column = fill_gaps(orig_column, interval, data_type, 
          effective_begin_date, effective_end_date) 
    adjusted_column = adjust_datetimes(station, time_zone_offset, std_column) 
    columns.append(adjusted_column) 

編輯:我所做的代碼更短。抱歉!

+0

那麼,請嘗試打印'line.split()'來查看它返回的內容。 – TidB 2014-11-06 18:36:00

+0

對不起,請給我們一個[SSCCE](http://sscce.org/)? – Dannnno 2014-11-06 18:37:20

+0

@Dannnno不要對不起,這是我的錯。 – zestybrother98 2014-11-06 18:44:30

回答

0

正如錯誤所示,等式右邊的值太多(line.split())。

您可以找到documentation進行字符串拆分。您似乎有超過3個值要分配。如果您不知道將獲得多少個值,則可以使用*語法來保存任何剩餘的值。

line = "Hello there world" 
word1, *remaining_words = line.split() 
+0

我試過這樣做,但我正在使用Python 2.6.8,也許我應該試試更高版本。雖然謝謝! – zestybrother98 2014-11-06 19:07:09

0

我已經想通了我的問題!

我的下載定義有不正確的data_types,導致它一次收集所有六個數據類型,而不是一次一個。

def download(station, data_types, begin_date, end_date): 

    query_string = ('station=' + station 
     + '&year=' + str(begin_date.year) 
     + '&month=' + str(begin_date.month) 
     + '&day=' + str(begin_date.day) 
     + '&year=' + str(end_date.year) 
     + '&month=' + str(end_date.month) 
     + '&day=' + str(end_date.day) 
     + '&pcode=' + data_types) 
    url = AGRIMET_WEBSITE + '?' + query_string 
相關問題