Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 13, 2016 15:45:39

Syslik
Зарегистрирован: 2016-09-15
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

ValueError: too many values to unpack

Народ, подскажите, в чём проблема. Есть у меня файл лога, пытаюсь его распарсить. Т.е. строку делю на 4 части по знаку ‘ ; ’, соответственно 4 переменные

 def pbs_to_dict(lines):
    logging.debug(lines)
    for l in lines:
# Split line into parts, only care about raw_data
        data_time, job, cluster, raw_data = lines.split(';')
        data_time = data_time.split(' ')
        raw_data = raw_data.split(' ')
……….
Выдаёт ошибку: ValueError: too many values to unpack
Вот кусочек самого файла (остальные записи аналогичны)
'08/01/2015 00:00:08;S;27643398;user=pilatl09 group=atlaspil jobname=cream_086765376 queue=atlas ctime=1438375665 qtime=1438375666 etime=1438375666 start=1438376408 owner=pilatl09 exec_host=wn/11 Resource_List.cput=60:00:00 Resource_List.neednodes=1 Resource_List.nodect=1 Resource_List.nodes=1 Resource_List.walltime=72:00:00'
Что я делаю не так?

Отредактировано Syslik (Дек. 14, 2016 07:46:25)

Офлайн

#2 Дек. 13, 2016 16:20:41

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

ValueError: too many values to unpack

Оберните код в тег КОД
Дайте полный лог ошибки



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#3 Дек. 13, 2016 16:20:42

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

ValueError: too many values to unpack

Прежде чем присваивать вот тут

 data_time, job, cluster, raw_data = lines.split(';')
, ну сделай ты принт того что получилось после сплита вот так
 print(lines.split(';'))
Ну что, разве посмотреть на данные, которые получаются в процессе работы программы, это такая сложная концепция, что до неё нельзя додуматься самостоятельно?



Офлайн

#4 Дек. 14, 2016 07:58:06

Syslik
Зарегистрирован: 2016-09-15
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

ValueError: too many values to unpack

Ну, сделала я принт того, что получилось после сплита вот так. Вот то-то и оно, что print(lines.split(';')) как раз делит, как мне нужно:

 ['08/01/2015 00:00:08", 'S', '27643398', "user=pilatl09 group=atlaspil jobname=cream_086765376 queue=atlas ctime=1438375665 qtime=1438375666 etime=1438375666 start=1438376408 owner=pilatl09 exec_host=wn/11 Resource_List.cput=60:00:00 Resource_List.neednodes=1 Resource_List.nodect=1 Resource_List.nodes=1 Resource_List.walltime=72:00:00\\n']
Вот полный лог:
 File "parse.py", line 19, in pbs_to_dict
    data_time, job, cluster, raw_data = lines.split(';')
ValueError: too many values to unpack

Офлайн

#5 Дек. 14, 2016 08:28:10

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

ValueError: too many values to unpack

Syslik
Что я делаю не так?
1. надеетесь на не описанное в техничеком задании соглашение что будет 4 элемента в строке.
Например у вас нет пустой последней строки в логе?
2 вы не приводите код которым вы получили ошибку и данные на которых она получена.



Офлайн

#6 Дек. 14, 2016 08:31:33

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

ValueError: too many values to unpack

Прежде всего у вас ошибки в самой структуре данных
к примеру

 ['08/01/2015 00:00:08", 'S',
Первый же член списка открывается скобкой
 '
а закрывается двойной
  "
начните с этого



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#7 Дек. 14, 2016 08:34:27

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

ValueError: too many values to unpack

Syslik
Ну, сделала я принт
А вот теперь надо раскрыть глаза и увидеть, что принт вам написал одну строку, а не четыре.



Офлайн

#8 Дек. 14, 2016 08:46:38

Syslik
Зарегистрирован: 2016-09-15
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

ValueError: too many values to unpack

ZerG, всё, теперь заментила - вместо readlines использовать read. Благодарю

Офлайн

#9 Дек. 14, 2016 09:48:21

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

ValueError: too many values to unpack

Не за что



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version