0

我从 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'):

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

4

2 回答 2

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()。

于 2012-05-30T23:19:57.800 回答
1

尝试any反对列表理解。

any(e in href for e in IMAGE_FORMAT)

或者,用英语,“我的 URI 中是否有我的图像格式中的任何项目?” 不过,请记住in字符串的功能。

于 2012-05-30T23:19:06.533 回答