这是我的问题的简化版本,但这里是它的要点:我有一个脚本,它使用正则表达式对电子邮件进行排序以查找特定模式。我排序的项目之一是收到电子邮件的日期。我使用 datetime 模块来格式化日期字符串,如下所示:
s1 = datetime.strptime(regex_obtained_str, '%B %d, %Y, %I:%M:%S %p').strftime('%m/%d/%Y %I:%M:%S %p')
现在,假设我已经解析了 4 封电子邮件,这些是 Regex 函数的结果:
s1 = 'March 15, 2013 8:58:34 PM'
s2 = 'March 15, 2013 11:10:10 AM'
s3 = 'March 15, 2013 11:16:06 AM'
s4 = 'April 15, 2013 12:02:04 PM'
在 strftime 格式化后变成这样:
s1 = '03/15/2013 08:58:34 PM'
s2 = '03/15/2013 11:10:10 AM'
s3 = '03/15/2013 11:16:06 AM'
s4 = '04/15/2013 12:02:04 PM'
如果我将这些都按随机顺序放在一个列表中并执行 sort() 函数,如下所示:
L = [s2, s1, s3, s4]
L.sort()
输出是:
['03/15/2013 08:58:34 PM', '03/15/2013 11:10:10 AM', '03/15/2013 11:16:06 AM', '04/15/2013 12:02:04 PM']
如您所见,排序时没有考虑“AM”和“PM”。我在 StackOverflow 上查看了许多与此类似的其他问题,所有这些问题都建议在 strptime()/stftime() 函数中将 %H 更改为 %I 以说明 12 小时制,但我已经完成了那。任何人都可以建议在排序时如何考虑 %p 吗?谢谢!