我有两个清单
list1 = ['image1.png', 'image2.png', 'image3.png', 'image3.png']
list2 = ['image1.pdf', 'image2.eps', 'image3.ps']
我想创建一个包含 list1 名称的列表,如果该名称(忽略扩展名)包含在 list2 中。对于上面的例子,正确答案是
['image1.png', 'image2.png', 'image3.png']
知道怎么做吗?
谢谢
卡尔
from os.path import splitext
list1 = ['image1.png', 'image2.png', 'image3.png', 'image3.png', 'image4.png', 'image3.jpg']
list2 = ['image1.pdf', 'image2.eps', 'image3.ps', 'image5.doc']
# Create a lookup set of the document names sans extensions.
documents = set([splitext(filename)[0] for filename in list2])
# Compare each stripped filename in list1 to the list of stripped document filenames.
matches = [filename for filename in set(list1) if splitext(filename)[0] in documents]
print matches
Output:
['image1.png', 'image2.png', 'image3.png', 'image3.jpg']
请注意,它必须针对具有多个扩展名的文件进行调整,例如.tar.gz
如果需要的话 (filename.partition(".")[0]
就可以了)。但这意味着点不能放在文件名中的任何位置,因为first点现在分隔扩展名。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)