python 日期排序的實(shí)例代碼
問題1:如果日期中有千年以前的情況(沒法用格式化函數(shù)),如('2010-11-23','1989-3-7','2010-1-5','978-12-1','2010-2-4')參照方法1
問題2:如果日期中沒有千年以前的情況,做法就很多了。參照方法2和方法3
# -*- coding: utf-8 -*-
import time
from operator import itemgetter
arr=('2010-11-23','1989-3-7','2010-1-5','978-12-1','2010-2-4')
def date_sort1(x):
ls=list(x)
#用了冒泡排序來排序,其他方法效果一樣
for j in range(len(ls)-1):
for i in range(len(ls)-j-1):
lower=ls[i].split('-')
upper=ls[i+1].split('-')
for s in range(3):
if int(lower[s])>int(upper[s]):
ls[i],ls[i+1]=ls[i+1],ls[i]
break
elif int(lower[s])<int(upper[s]):
break
ar=tuple(ls)
return ar
ar=('2010-11-23','1989-3-7','2010-2-4','2010-1-5')
def date_sort2(x):
ls=list(x)
dic={}
for l in ls:
#返回用秒數(shù)來表示時間的浮點(diǎn)數(shù)
dic[l]=time.mktime(time.strptime(l, '%Y-%m-%d'))
dic=sorted(dic.iteritems(), key=itemgetter(1))
sorted_items=[keys[0] for keys in dic]
'''
items=dic.items()
backitems=[[v[1],v[0]] for v in items]
backitems.sort()
sorted_items=[keys[1] for keys in backitems]
'''
'''
items=dic.items()
backitems=[[v[0],v[1]] for v in items]
backitems=sorted(backitems, key=lambda x : x[1])
sorted_items=[keys[0] for keys in backitems]
'''
return tuple(sorted_items)
import datetime
def date_sort3(x):
ls=list(x)
#用了冒泡排序來排序,其他方法效果一樣
for j in range(len(ls)-1):
for i in range(len(ls)-j-1):
lower=datetime.datetime.strptime(ls[i], '%Y-%m-%d')
upper=datetime.datetime.strptime(ls[i+1], '%Y-%m-%d')
if lower>upper:
ls[i],ls[i+1]=ls[i+1],ls[i]
return tuple(ls)
print date_sort1(arr)
print date_sort2(ar)
print date_sort3(ar)
運(yùn)行結(jié)果:
('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')
正則表達(dá)式同樣可以處理這類問題,下面是正則表達(dá)式的解決方案。
#利用正則表達(dá)式
import re
data = ['2010-11-23','1989-3-7','2010-1-5','978-12-1','2010-2-4']
patt = '(\d+)-(\d+)-(\d+)'
#交換排序
for i in range(len(data)-1):
for x in range(i+1, len(data)):
j = 1
while j<4:
lower = re.match(patt, data[i]).group(j)
upper = re.match(patt, data[x]).group(j)
#print lower,upper
if int(lower) < int(upper):
j = 4
elif int(lower) == int(upper):
j += 1
else:
data[i],data[x] = data[x],data[i]
j = 4
print data
總結(jié)
以上所述是小編給大家介紹的python 日期排序的實(shí)例代碼 ,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
相關(guān)文章
python腳本監(jiān)控logstash進(jìn)程并郵件告警實(shí)例
這篇文章主要介紹了python腳本監(jiān)控logstash進(jìn)程并郵件告警實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
python3.4實(shí)現(xiàn)郵件發(fā)送功能
這篇文章主要為大家詳細(xì)介紹了python3.4實(shí)現(xiàn)郵件發(fā)送功能,含帶中文附件,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-05-05
Python中Array特性與應(yīng)用實(shí)例深入探究
這篇文章主要為大家介紹了Python中Array特性與應(yīng)用實(shí)例深入探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01
Python中文分詞工具之結(jié)巴分詞用法實(shí)例總結(jié)【經(jīng)典案例】
這篇文章主要介紹了Python中文分詞工具之結(jié)巴分詞用法,結(jié)合實(shí)例形式總結(jié)分析了Python針對中文文件的讀取與分詞操作過程中遇到的問題與解決方法,需要的朋友可以參考下2017-04-04

