如何解决按表示日期的字符串的一部分对 Python 列表进行排序
考虑这个列表:
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']
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。