При изменении csv файла ошибка "ValueError: not enough values to unpack (expected 3, got 1)"

Столкнулся со следующей проблемой в python3.10.4 :

Задача - изменить в csv файле формат даты с дд.мм.гг на гг-мм-дд (изменить порядок значений и разделитель заменить с точки на тире). Сам код:

import datetime

with open("data/btc_usd_2015.csv", 'r') as csvfile, open('data/temp.csv', 'w') as temp_file:

    for lines in csvfile.readlines():
        # Fetch all dates in the csv
        dates = lines

        # Extract date, month and year
        dt, mon, yr = dates[1].split(',')

        # Convert the date 
        dates[1] = datetime.datetime.strptime(dates[1], '%d.%b.%y').strftime('%y-%b-%d')

        # Write date to temp file
        temp_file.write(','.join(dates))

print("Process complete!")

После запуска выдает следующую ошибку:

   line 10, in <module>
    dt, mon, yr = dates[1].split(',')
ValueError: not enough values to unpack (expected 3, got 1)

Уже разные варианты перепробовал - все равно эта ошибка (также прикрепляю скрин с форматированием csv файла с исходными данными).

Огромное спасибо за помощь.

введите сюда описание изображения


Ответы (1 шт):

Автор решения: Сергей

dates[1] не несёт нужного смысла. Правильно - dt, mon, yr = dates.split(',') Тогда получите следующую ошибку:-)

А вообще - читайте тексты ошибок и анализируйте их. Вам писали - "1 значение получено, а ждут 3". Так распечатайте ваш dates[1] и сразу увидите, что он - не то, что вы ждали, а только часть (цифра 1 - треть триплета ожидаемого) - значит, всё вместе есть в полном dates.

Но вопрос вы задали качественно, да. С ним всё понятно, где искать и как воспроизводить. Это +1 за вопрос :-)

→ Ссылка