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 に答える