2012-05-30 3 views
0

HTML 문서에서 href 값 목록을 반환했습니다. 이 목록 내의 모든 링크를 살펴보고 해당 값이 내 IMAGE_FORMAT 튜플에 포함되어 있는지 테스트 해보고 싶습니다. 현재Python :리스트에서 [여러 값] 인 경우 여러 값을 테스트하는 방법 :

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 

하지만, 다음 .endswith 사용 '등. 대소 문자를 신경 쓸 필요가 없다면 href.lower()를 사용하는 것이 좋습니다.

+1

나는 항상'.endswith'가 이미 원하는 것을하기 위해'* args'를 받아들이지 않는다는 것을 무시하면서'any ('fred.gif'.endswith (ending for IMAGE_FORMAT) ')'라고 쓰고 싶다. x.x –

+0

당신이 말하고자하는 것은 _ 정말로 원한다면, 아마도 ... 같은 코드를 작성하는 더 좋은 방법이 있을까요? –

1

목록 이해에 대해 any을 시도하십시오.

또는 "내 이미지 형식의 항목이 모두 내 URI에 있습니까?" 비록 염두에두고 어떻게 in 문자열과 기능, 그래도.

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

당신이 'fred.gif.gz을 치료하는 방법에 따라 달라집니다 : 당신이 실제로 ends with을 원하는 경우

+1

목록이 필요 없습니다. 'any (IMAGE_FORMAT에서 e에 대한 href로 e)가 정상적으로 작동합니다. – kindall

+0

@kindall 좋은 포인트 - 수정 된 게시물. – cheeken

관련 문제