基本上我希望文件名以扩展名列表中的扩展名结尾。 这是我在python中的代码。 我已经将一些示例文件名作为列表,如下所示:
extensions = ['.mp3','.m4a','.wma']
filenames = ['foo1.mp3','foo2.txt','foo3.m4a','foo4.mp4']
for filename in filenames:
for extension in extensions:
if filename.endswith(extension):
print filename
break
这是有效的,但我很想知道在python中做同样的事情是否更有效或更短。 谢谢
答案 0 :(得分:6)
endswith
接受一个元组,所以非常简单:
exts = tuple(extensions)
[f for f in filenames if f.endswith(exts)]
答案 1 :(得分:1)
print [f for f in filenames if f[f.rindex('.'):] in extensions]
工作原理:
这是一个列表理解,所以有趣的部分是在“if”之后。
好吧,我们使用f.rindex('。')来查找文件名中的最后一个点。然后我们使用切片从那里到结尾获取f的一部分。最后,“在扩展名中”只是检查扩展名列表是否包含文件的扩展名。
答案 2 :(得分:0)
您可以使用list comprehension以简洁的方式执行此操作:
[f for f in filenames for e in extensions if f.endswith(e)]