我的文件夹名为 29Jun2011,12Aug2013,31Jan2013,08Aug1985。我必须使用 Python 脚本按时间倒序排序。而且我必须将最新的一个存储在一个变量中并打印出来。
问问题
450 次
2 回答
1
import datetime as dt
date_strs = [
"29Jun2011",
"08Aug1985",
"12Aug2013",
]
my_format = "%d%b%Y"
datetime_objs = []
for date_str in date_strs:
my_datetime = dt.datetime.strptime(date_str, my_format)
datetime_objs.append(my_datetime)
print datetime_objs
datetime_objs.sort(reverse=True)
print datetime_objs
print datetime_objs[0].strftime("%B %d, %Y")
--output:--
[datetime.datetime(2011, 6, 29, 0, 0), datetime.datetime(1985, 8, 8, 0, 0), datetime.datetime(2013, 8, 12, 0, 0)]
[datetime.datetime(2013, 8, 12, 0, 0), datetime.datetime(2011, 6, 29, 0, 0), datetime.datetime(1985, 8, 8, 0, 0)]
August 12, 2013
于 2013-08-13T10:22:16.267 回答
0
如果您可以更改文件夹的名称,请使用 ISO-8601 日期格式,即YYYY-MM-DD
;您可以使用标准 ASCII 排序规则对它们进行排序;)
如果这是不可能的,你可以排序
import time
def sortkey(s):
return time.strptime(s, '%d%b%Y')
names = sorted(unsorted_names, key=sortkey)
但是,如果您只需要最新的,那么您只需要最大值:
def sortkey(s):
return time.strptime(s, '%d%b%Y')
date, filename = max((sortkey(i), i) for i in unsorted_names)
print date, filename
这要快得多。一般来说,如果你的问题是“找到最大值”,你不想使用排序;如果只需要最大值,则使用该max()
函数;如果需要 n 个值,请使用heapq.nlargest
于 2013-08-13T09:57:12.250 回答