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