2012-05-30 37 views
0

我已經從HTML文檔返回了href值的列表。我想通過此列表中的每個鏈接並測試它們是否包含我的IMAGE_FORMAT元組中的任何值。Python:如何在列表中測試if [多個值]中的多個值:

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

目前我只測試了'.jpg'if '.jpg' in link.get('href'):

我想這個代碼一起的if [any value inside IMAGEFORMAT] in link.get('href'):

線延伸至東西會是什麼最有效的或最徹底的方法或這樣做?

回答

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

我總是發現自己很想寫'any('fred.gif'.endswith(ending)'以IMAGE_FORMAT結尾),忽略'.endswith'已經接受'* args'來做我想做的事情。 x.x –

+0

你提到_如果你真的想要,那麼也許......_會有更好的方式來編寫相同的代碼嗎? –

1

嘗試any反對列表理解。

any(e in href for e in IMAGE_FORMAT) 

或者,在英文中,「我的圖像格式中的任何項目是否在我的URI中?」但是,請記住in如何與字符串一起使用。

+1

無需列表。 '任何(在IMAGE_FORMAT中的e的href)'都可以。 – kindall

+0

@ kindall好點 - 修改後。 – cheeken

相關問題