2014-11-06 56 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 
相关问题