在python列表中过滤掉字符串日期

时间:2018-09-03 02:32:34

标签: python-3.x

我有一个列表,其中包含类似

的字典(my_list)
@RequestPart(name = "file", required = false) MultipartFile file

我想在生日前过滤掉结果

[{'name': 'jane', 'number': 123, 'birthday': '04/05/78'}, 
 {'name': 'summer', 'number': 542, 'birthday': '07/01/1990'},
 {'name': 'carter', 'number': 003, 'birthday': '12/15/1992'}]

这应该消除第一个条目,但是当我打印出我的过滤器时,所有三个条目仍将被打印。

如何比较字符串日期(生日)以过滤出数据?

1 个答案:

答案 0 :(得分:2)

您可以使用datetime.strptime将日期字符串解析为datetime对象以进行比较。由于日期字符串的年份部分格式不一致,因此您应首先使用正则表达式替换使其标准化:

from datetime import datetime
import re
my_list = [{'name': 'jane', 'number': 123, 'birthday': '04/05/78'},
 {'name': 'summer', 'number': 542, 'birthday': '07/01/1990'},
 {'name': 'carter', 'number': 3, 'birthday': '12/15/1992'}]
print([elf for elf in my_list if datetime.strptime(re.sub(r'\d\d(\d\d)$', r'\1', elf['birthday']), '%m/%d/%y') >= datetime(1980, 1, 1)])

这将输出:

[{'name': 'summer', 'number': 542, 'birthday': '07/01/1990'}, {'name': 'carter', 'number': 3, 'birthday': '12/15/1992'}]