python - 如何在python中对日期进行排序?
问题描述
我试图对列表中的日期进行排序,但日期在字符串元素之后[EQUIP-X]
。首先使用正则表达式,取唯一的日期并尝试排序。它不起作用!
我想拆分字符串[EQUIP-X]
和Date
.
files = [filename for root, dirs, files in os.walk(path) for filename in files for date in dateList if filename.endswith(date+".log")]
for item in files:
reg = re.search(r"(.+]).(\d{2}.\d{2}.\d{4})",item)
equip = reg.group(1)
data = reg.group(2)
namefile = data+'.'+equip
print item
- 组(1) - [EQUIP-X]
- 组(2) - 日期
示例字符串:
[EQUIP-4].02.05.2019.log
[EQUIP-2].01.05.2019.log
[EQUIP-1].30.04.2019.log
[EQUIP-3].29.04.2019.log
[EQUIP-1].01.05.2019.log
[EQUIP-5].30.04.2019.log
[EQUIP-1].29.04.2019.log
[EQUIP-5].30.04.2019.log
[EQUIP-3].30.04.2019.log
[EQUIP-1].29.04.2019.log
[EQUIP-2].02.05.2019.log
在本教程之后,一旦我不操作“日期”而是“str”,“str”对象就没有属性“sort”。更好的方法是什么?这个想法是拆分和处理日期,然后加入所有
解决方案
您可以根据字符串的结尾减去最后 4 个字符(文件扩展名)作为日期进行排序。由于日期格式是零填充的,因此它应该总是 10 个字符长,因此字符串拼接从 -14 开始(日期为 10,扩展为 4)
from datetime import datetime
files = ['[EQUIP-4].02.05.2019.log',
'[EQUIP-2].01.05.2019.log',
'[EQUIP-1].30.04.2019.log',
'[EQUIP-3].29.04.2019.log',
'[EQUIP-1].01.05.2019.log',
'[EQUIP-5].30.04.2019.log',
'[EQUIP-1].29.04.2019.log',
'[EQUIP-5].30.04.2019.log',
'[EQUIP-3].30.04.2019.log',
'[EQUIP-1].29.04.2019.log',
'[EQUIP-2].02.05.2019.log']
files.sort(key=lambda x: datetime.strptime(x[-14:-4], '%d.%m.%Y'))
print(files)
['[EQUIP-3].29.04.2019.log',
'[EQUIP-1].29.04.2019.log',
'[EQUIP-1].29.04.2019.log',
'[EQUIP-1].30.04.2019.log',
'[EQUIP-5].30.04.2019.log',
'[EQUIP-5].30.04.2019.log',
'[EQUIP-3].30.04.2019.log',
'[EQUIP-2].01.05.2019.log',
'[EQUIP-1].01.05.2019.log',
'[EQUIP-4].02.05.2019.log',
'[EQUIP-2].02.05.2019.log']
推荐阅读
- ios - 使用语音转文本删除搜索栏上的下划线
- wpf - WPF DataGrid MultiBinding 到 DataGrid 的 ItemSource 中的类
- python-2.7 - 给定脚本中是否有 time.sleep() 的替代品?
- android - Android SDK解析短信
- c# - 是否可以从实用程序/批处理文件运行 Visual Studio SQL Server 项目?
- python - 无法遍历文件中的单词并将字符串附加到每一行
- webpack - React Loadable JSON mapping file with components being referenced from multiple locations
- elastic-load-balancer - WebSocket connection failed - ERR_CERT_COMMON_NAME_INVALID
- javascript - 当所有 Node 工作人员都死亡时,集群主服务器会发生什么?
- java - 反转二维数组