#python #csv #datetime
#python #csv #дата и время
Вопрос:
Я пытаюсь получить вывод всех сотрудников, которые работали в этом месяце, извлекая месяц из даты, но я получаю эту ошибку:
month = int(row[1].split('-')[1])
IndexError: list index out of range
Строка в csv-файле журнала посещаемости выглядит следующим образом:
"404555403","2020-10-14 23:58:15.668520","Chandler Bing"
Я не понимаю, почему он находится вне диапазона?
Спасибо за любую помощь!
import csv
import datetime
def monthly_attendance_report():
"""
The function prints the attendance data of all employees from this month.
"""
this_month = datetime.datetime.now().month
with open('attendance_log.csv', 'r') as csvfile:
content = csv.reader(csvfile, delimiter=',')
for row in content:
month = int(row[1].split('-')[1])
if month == this_month:
return row
monthly_attendance_report()
Комментарии:
1. Ваша логика отлично работает со списком; попробуйте проверить, правильно ли вы выполняете итерацию по CSV-файлу (т. Е. Попробуйте распечатать
row
).
Ответ №1:
У меня это работает. Проблема, вероятно, будет заключаться в обработке файла csv, потому что файлы csv в большинстве случаев имеют заголовки, что означает, что вы не можете разделить текст заголовка. Итак, добавьте slicer [1:] в свой цикл for и игнорируйте первую строку с заголовком:
for row in content[1:]:
И обработка даты путем нарезки тоже не очень хороша. Используйте модуль datetime или что-то в этом роде.