← Все вопросы
ValueError: too many values to unpack (expected 2) — что значит при распаковке?
10
for line in file:
key, value = line.split()
на некоторых строках падает ValueError: too many values to unpack (expected 2). Как это правильно обработать?
3 ответа
19
✓ Принятый ответ — помог автору
Распаковка a, b = ... требует, чтобы справа было РОВНО два элемента. Сообщение «too many values to unpack (expected 2)» значит, что справа их оказалось больше двух — например, строка "a b c" после split() даёт три куска, а слева только две переменные.
Варианты:
- Если лишние куски нужно склеить в один — ограничьте число разбиений:
key, value = line.split(maxsplit=1) # делим только по первому пробелу
- Если хвост нужно собрать в список — звёздочка:
key, *rest = line.split()
- Бывает и обратное —
not enough values to unpack, это когда элементов МЕНЬШЕ, чем переменных (например, пустая строка). Стоит заранее отфильтровать пустые строки.
5
maxsplit=1 в split — и проблема уходит, если делите «ключ + остаток».
3
Звёздочкой: first, *others = ...
Ваш ответ
Войдите, чтобы ответить на вопрос.