【发布时间】:2022-11-25 18:58:14
【问题描述】:
我使用正则表达式在字符串中查找这些日期
matches = ['10 October 2019', '20 October 2019', '10 October 2019', '25 October 2019']
matches[0] 和 matches[2] 是分配任务的日期,matches[1] 和 matches[3] 是任务的截止日期。我需要检查任务是否逾期,所以我需要检查 matches[1] 和 matches[3] 是否在今天之前
这是我试过的
index = 0
for random_value in range(0, len(matches)/2):
assert(matches[index]> date.today())
index += 2
这是我收到的错误消息
TypeError: '>' not supported between instances of 'str' and 'datetime.date'
如何将 matches[index] 转换为与当前日期进行比较的格式?
【问题讨论】:
-
如果格式固定,
strptime可能有效(%d %B %Y似乎是格式)。这会将字符串转换为日期时间,您可以从中获取date()并与引用进行比较。如果格式不固定,您可能需要使用dateutil.parser代替,因为它可以进行“模糊解析”(尝试多种方式)。 -
除此之外,您应该了解
range的工作原理以及它的功能,因为完全没有必要手动递增index。此外,范围的结果不是随机的,如果您不关心该值(因为您只想要 n 次迭代),您会习惯使用_例如for _ in range(n): -
最后
assert不是一个函数,它是一个语句,将它写成一个函数是一个常见的错误原因,不要那样做。断言似乎也是这里工作的错误工具(捕获断言错误太笼统了),但不清楚调用者/周围代码应该是什么。 -
好的,谢谢,我会调查所有这些