При изменении 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 за вопрос :-)
