Как извлечь месяц из даты в CSV-файле?

#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 или что-то в этом роде.