使用python从未知日期格式获取年份



所以我在服务器上查询特定的数据,我需要从返回的日期字段中提取年份,但日期字段会有所不同,例如:

2009
2009-10-8
2009-10
2017-10-22
2017-10

显而易见的是将日期提取到数组中并获取最大值:(但有一个问题(

year = max(d.split('-'))

出于某种原因,这会产生误报,因为22似乎是2017年的最大值,而且如果未来对服务器的调用导致日期存储为"2019/10/20",这也会带来问题。

问题是,当2017 > 22'2017' < '22'时,因为它是一个字符串比较。你可以这样做来解决这个问题:

year = max(map(int, d.split('-')))

但是,如果你不介意被Long Now基金会反对,可以考虑使用正则表达式来提取任何4位数:

match = re.search(r'bd{4}b', d)
if match:
year = int(match.group(0))

我会使用python dateutil库从日期字符串中轻松提取年份:

from dateutil.parser import parse
dates = ['2009', '2009-10-8', '2009-10']
for date in dates:
print(parse(date).year)

输出:

2009
2009
2009

最新更新