2014-11-06 3 views
-1

Так что это в значительной степени программа для утилизации веб-страниц. Мне кажется, что он почти закончен, но я понятия не имею, как это исправить!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) 

EDIT: Я сделал код короче. Сожалею!

+0

Ну, попробуйте напечатать 'line.split()', чтобы увидеть, что он возвращает. – TidB

+0

Извините, не могли бы вы дать нам [SSCCE] (http://sscce.org/)? – Dannnno

+0

@ Dannnno Не пожалеете, это моя вина. – zestybrother98

ответ

0

Как показывает ошибка, в правой части вашего уравнения имеется слишком много значений (line.split()).

Вы можете найти documentation для разделения строк. Кажется, у вас есть более 3 значений. Если вы не знаете, сколько значений вы получите, вы можете использовать синтаксис * для хранения любых оставшихся значений.

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

Я пробовал это делать, но я работаю с Python 2.6.8, возможно, мне стоит просто попробовать более позднюю версию. Спасибо хоть! – zestybrother98

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 
Смежные вопросы