Найти - Пользователи
Полная версия: ValueError: too many values to unpack
Начало » Python для новичков » ValueError: too many values to unpack
1
Syslik
Народ, подскажите, в чём проблема. Есть у меня файл лога, пытаюсь его распарсить. Т.е. строку делю на 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'
Что я делаю не так?
ZerG
Оберните код в тег КОД
Дайте полный лог ошибки
FishHook
Прежде чем присваивать вот тут
 data_time, job, cluster, raw_data = lines.split(';')
, ну сделай ты принт того что получилось после сплита вот так
 print(lines.split(';'))
Ну что, разве посмотреть на данные, которые получаются в процессе работы программы, это такая сложная концепция, что до неё нельзя додуматься самостоятельно?
Syslik
Ну, сделала я принт того, что получилось после сплита вот так. Вот то-то и оно, что 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
doza_and
Syslik
Что я делаю не так?
1. надеетесь на не описанное в техничеком задании соглашение что будет 4 элемента в строке.
Например у вас нет пустой последней строки в логе?
2 вы не приводите код которым вы получили ошибку и данные на которых она получена.
ZerG
Прежде всего у вас ошибки в самой структуре данных
к примеру
 ['08/01/2015 00:00:08", 'S',
Первый же член списка открывается скобкой
 '
а закрывается двойной
  "
начните с этого
FishHook
Syslik
Ну, сделала я принт
А вот теперь надо раскрыть глаза и увидеть, что принт вам написал одну строку, а не четыре.
Syslik
ZerG, всё, теперь заментила - вместо readlines использовать read. Благодарю
ZerG
Не за что
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB