我需要打印最新版本的文件:
filenames = [
'jaks-dataformat-cbor-2.6.6.jar',
'sqljdbc42-4.2.jar',
'sqljdbc42-4.3.jar',
'spark-core_2.10-1.6.2.jar',
'spark-core_2.10-1.6.4.jar',
'commons-cli-1.2.jar',
]
在上面的列表中,我有两个 sqljdbc42-4.2.jar 和 sqljdbc42-4.3.jar 。我只想打印4.3一个,同样的是spark-core只打印6.4一个。我尝试了一些模式但没有任何作用。任何帮助表示赞赏。
如果文件名起始相同且只有扩展名不同,这就是我能够获得的。
sorted_files = sorted(filenames, key=lambda x: int(x.split('.')[1]))
print sorted_files
答案 0 :(得分:0)
我以为我会在他对自己的做法的评论中实施保罗·鲁尼的建议,
filenames = [
'jaks-dataformat-cbor-2.6.6.jar',
'sqljdbc42-4.2.jar',
'sqljdbc42-4.3.jar',
'spark-core_2.10-1.6.2.jar',
'spark-core_2.10-1.6.4.jar',
'commons-cli-1.2.jar',
]
from collections import OrderedDict
latest_versions = list(OrderedDict([fn.rsplit('-', 1) for fn in filenames]).items())
new_filenames = []
for fn in latest_versions:
new_filenames.append(''.join(fn))
结果是:
print new_filenames
['jaks-dataformat-cbor2.6.6.jar', 'sqljdbc424.3.jar', 'spark-core_2.101.6.4.jar', 'commons-cli1.2.jar']
可能不是最好的解决方案,但希望它可以在此期间为您提供帮助。