Сравнение элементов в списке - PullRequest
1 голос
/ 20 апреля 2020

У меня есть текстовый файл, содержащий даты и даты, когда задачи были назначены и были ли они выполнены или нет. Я хочу написать код, который может go через файл и определить, просрочены ли задачи. Я превратил каждую строку в текстовом файле в список, и я пытаюсь проверить, соответствует ли срок выполнения текущей дате и является ли часть строки, которая комментирует, завершена ли задача, «Нет».

for line in rdfile:
    line.strip("\n")
    thetasks = line.split(", ")

Срок выполнения - это второй по счету последний элемент в списке, а № для указания того, завершена ли задача, - последний элемент в списке.

Предполагается, что строка:

Admin, Assign initial tasks, 14 Apr 2020, 02 Apr 2020, No

После использования кода выше у меня есть список, содержащий элементы в строке выше, разделенные запятой и пробелом.

Ответы [ 2 ]

0 голосов
/ 20 апреля 2020

Эта функция выполнит задание:

from datetime import datetime

def is_overdue(task):
    splited_line = [elem.strip() for elem in task.split(",")]

    # Datetime object with current datetime
    now = datetime.now()

    # Datetime object with due datetime
    due_datetime = datetime.strptime(splited_line[-2], '%d %b %Y')

    # Boolean value representing task completion 
    is_finished = (splited_line[-1] != "No")

    return (not is_finished) and (due_datetime < now)


line = "Admin, Assign initial tasks, 14 Apr 2020, 02 Apr 2020, No"

print(is_overdue(line))
# True

Функция проверит заданную строку на две вещи:

  • Если срок выполнения задания истек: (due_datetime < now)
  • Если задание выполнено (я полагаю, что все, кроме «Нет», означает, что задание выполнено здесь)
0 голосов
/ 20 апреля 2020

Исходя из вашего образца и предполагая, что формат ваших строк остается прежним, вы можете использовать это.

from datetime import datetime

line = "Admin, Assign initial tasks, 14 Apr 2020, 02 Apr 2020, No"
splitLine = line.split(',')
date_obj = datetime.strptime(splitLine[2].lstrip(), '%d %b %Y')
print(date_obj.strftime('%d-%m-%Y'))
yes_no = splitLine[4].lstrip()
print(yes_no)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...