如何根据与字符串组合的最大日期对python列表进行排序
['', 'q//Attachments/Swoop_coverletter_311386_20120103.doc', 'q//Attachments/Swoop_RESUME_311386_20091012.doc', 'q//Attachments/Swoop_Resume_311386_20100901.doc', 'q//Attachments/Swoop_reSume_311386_20120103.doc', 'q//Attachments/Swoop_coverletter_311386_20100901.doc', 'q//Attachments/Swoop_coverletter_311386_20091012.doc']
以上是列表,预期结果如下
['q//Attachments/Swoop_coverletter_311386_20120103.doc','q//Attachments/Swoop_reSume_311386_20120103.doc','q//Attachments/Swoop_Resume_311386_20100901.doc','q//Attachments/Swoop_coverletter_311386_20100901.doc','q//Attachments/Swoop_RESUME_311386_20091012.doc','q//Attachments/Swoop_coverletter_311386_20091012.doc','']
我写了一个脚本,它不是排序,而是在最后只初始化一个值
a = ['q//Attachments/Swoop_coverletter_311386_20120103.doc','q//Attachments/Swoop_reSume_311386_20120103.doc','q//Attachments/Swoop_Resume_311386_20100901.doc','q//Attachments/Swoop_coverletter_311386_20100901.doc','q//Attachments/Swoop_RESUME_311386_20091012.doc','q//Attachments/Swoop_coverletter_311386_20091012.doc','']
print max(a)
结果:
q//Attachments/Swoop_reSume_311386_20120103.doc
我怎样才能得到这样的预期输出
预期产量:
['q//Attachments/Swoop_coverletter_311386_20120103.doc','q//Attachments/Swoop_reSume_311386_20120103.doc','q//Attachments/Swoop_Resume_311386_20100901.doc','q//Attachments/Swoop_coverletter_311386_20100901.doc','q//Attachments/Swoop_RESUME_311386_20091012.doc','q//Attachments/Swoop_coverletter_311386_20091012.doc','']
您可以尝试另一种单线解决方案(有点)。您必须首先通过删除空元素来清理列表
或者像在BioGeek's answer中那样简化它,而不是使用
datetime
,只需转换成int
并对其排序输出:
编写一个函数,用正则表达式从字符串中提取日期,并将其用作
sorted
的键:印刷品:
我认为使用内置函数
str.rpartition('_')
(https://docs.python.org/3/library/stdtypes.html#str.rpartition)可以更容易地解决这个问题当然,我假设所有文件的格式都相同,在这种情况下,上面的函数总是返回
<date>.doc
。然后您只需删除.doc
相关问题 更多 >
编程相关推荐