python 日期排序的实例代码
问题1:如果日期中有千年以前的情况(没法用格式化函数),如('2010-11-23','1989-3-7','2010-1-5','978-12-1','2010-2-4')参照方法1
问题2:如果日期中没有千年以前的情况,做法就很多了。参照方法2和方法3
#-*-coding:utf-8-*- importtime fromoperatorimportitemgetter arr=('2010-11-23','1989-3-7','2010-1-5','978-12-1','2010-2-4') defdate_sort1(x): ls=list(x) #用了冒泡排序来排序,其他方法效果一样 forjinrange(len(ls)-1): foriinrange(len(ls)-j-1): lower=ls[i].split('-') upper=ls[i+1].split('-') forsinrange(3): ifint(lower[s])>int(upper[s]): ls[i],ls[i+1]=ls[i+1],ls[i] break elifint(lower[s])upper: ls[i],ls[i+1]=ls[i+1],ls[i] returntuple(ls) printdate_sort1(arr) printdate_sort2(ar) printdate_sort3(ar)
运行结果:
('978-12-1','1989-3-7','2010-1-5','2010-2-4','2010-11-23')
('1989-3-7','2010-1-5','2010-2-4','2010-11-23')
('1989-3-7','2010-1-5','2010-2-4','2010-11-23')
正则表达式同样可以处理这类问题,下面是正则表达式的解决方案。
#利用正则表达式 importre data=['2010-11-23','1989-3-7','2010-1-5','978-12-1','2010-2-4'] patt='(\d+)-(\d+)-(\d+)' #交换排序 foriinrange(len(data)-1): forxinrange(i+1,len(data)): j=1 whilej<4: lower=re.match(patt,data[i]).group(j) upper=re.match(patt,data[x]).group(j) #printlower,upper ifint(lower)总结
以上所述是小编给大家介绍的python日期排序的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!