比较列表中的项目

2024-06-16 11:39:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文本文件,包含任务分配的截止日期和日期,以及任务是否完成。我想写一个代码,可以遍历文件并确定任务是否过期。我把文本文件中的每一行都变成了一个列表,我试图检查截止日期是否超过了当前日期,以及行中注释任务是否完成的部分是否为“否”

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

截止日期是列表中的第二个最后一项,用于指定任务是否完成的编号是列表中的最后一项

假设线路为:

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

在使用了上面的代码之后,我有一个列表,其中包含上面一行中由逗号和空格分隔的项目


Tags: 文件代码in列表foradminlineapr
2条回答

基于您的示例,并假设行的格式保持不变,您可以使用此选项

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)

此功能将完成以下工作:

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)
  • 如果任务完成了(我想,除“否”之外的所有内容都意味着任务在这里完成)

相关问题 更多 >