问题描述
考虑这个列表:
original_list = ['C:\\\\folder\\Apr2017_VH.img','C:\\\\folder\\Jan2019_VH.img','C:\\\\folder\\Nov2017_VH.img','C:\\\\folder\\Apr2018_VH.img','C:\\\\folder\\Mar2017_VH.img','C:\\\\folder\\May2019_VH.img','C:\\\\folder\\Aug2019_VH.img','C:\\\\folder\\Jan2020_VH.img','C:\\\\folder\\Oct2018_VH.img']
我需要按日期排序:
sorted_list = ['C:\\\\folder\\Mar2017_VH.img','C:\\\\folder\\Apr2017_VH.img','C:\\\\folder\\Oct2018_VH.img','C:\\\\folder\\Jan2020_VH.img']
我尝试拆分字符串,但我只能按年份和月份按字母顺序排序。
解决方法
在关闭之前快速提供帮助:
import datetime
def date_from_name(name):
return datetime.datetime.strptime(
name,'C:\\\\folder\\%b%Y_VH.img'
)
original_list = [
'C:\\\\folder\\Apr2017_VH.img','C:\\\\folder\\Jan2019_VH.img','C:\\\\folder\\Nov2017_VH.img','C:\\\\folder\\Apr2018_VH.img','C:\\\\folder\\Mar2017_VH.img','C:\\\\folder\\May2019_VH.img','C:\\\\folder\\Aug2019_VH.img','C:\\\\folder\\Jan2020_VH.img','C:\\\\folder\\Oct2018_VH.img'
]
sorted_list = sorted(original_list,key=date_from_name)
print(sorted_list)
解析日期的特殊字符是documented here。
,您可以使用 parse
模块中的 dateutil.parser
功能,该功能也能够解析不同格式的日期。
from dateutil.parser import parse
or_list = ['C:\\\\folder\\Apr2017_VH.img','C:\\\\folder\\Oct2018_VH.img']
def createdAt(item):
date = item.split('_VH')[0]
date = date.split('\\')[-1]
date = parse(date)
return date
sortedls = sorted(or_list,key=createdAt)
print(sortedls)
输出:
['C:\\\\folder\\Mar2017_VH.img','C:\\\\folder\\Apr2017_VH.img','C:\\\\folder\\Oct2018_VH.img','C:\\\\folder\\Jan2020_VH.img']