Python:如何在列表中的if [multiple values]内测试多个值:

时间:2012-05-30 23:11:11

标签: python

我从HTML文档中返回了一个href值列表。我想浏览此列表中的每个链接并测试它们是否包含IMAGE_FORMAT元组中的任何值。

IMAGE_FORMAT = (
    '.png',
    '.jpg',
    '.jpeg',
    '.gif',
)

目前我只是在测试'.jpg'例如if '.jpg' in link.get('href'):

我想将此代码扩展为if [any value inside IMAGEFORMAT] in link.get('href'):

最有效或最干净的方式是什么?

2 个答案:

答案 0 :(得分:6)

如果你真的想要in,那么可能

href = link.get('href')
if any(end in href for end in IMAGE_FORMAT):
    # do something
    pass

但如果您确实需要ends with,请使用.endswith

>>> IMAGE_FORMAT = ('.png','.gif','.jpg','.jpeg')
>>> 'fred.gif'.endswith(IMAGE_FORMAT)
True

取决于您希望如何对待'fred.gif.gz'等。另请注意,如果您不关心案例,您可能希望使用href.lower()。

答案 1 :(得分:1)

针对列表理解尝试any

any(e in href for e in IMAGE_FORMAT)

或者,在英语中,“我的URI中的图像格式是否为任何项目?”但是请记住in如何使用字符串。