2017-12-15 10 views
2

저는 사진에서 개념 이름을 얻기 위해 Clarifai의 API를 Python으로 사용하고 있으며 그 중 하나가 로컬 변수와 일치하는지 확인하려고합니다. 다음 명령은리스트를 호출목록에서 키워드가 하나 이상 있는지 확인하십시오.

In [1]: p1_response = model.predict_by_filename(filename='PATH_TO_FILE') 
     p1_concepts = p1_response['outputs'][0]['data']['concepts'] 
     for concept in p1_concepts: 
     print(concept['name']) 
Out [2]: street 
     outdoors 
     architecture 
     travel 
     city 
     horizontal plane 
     pavement 
     road 
     house 
     town 
     urban 
     car 
     no person 
     building 
     stock 
     luxury 
     traffic 
     apartment 
     business 
     tourism 

내 지역 변수가 "car"로 정의 된 keyword이다. if keyword in concept['name']을 실행하려고했지만 내 콘솔은 True 앞에을 표시했습니다. 사실, concept['name']에 적어도 하나의 keyword 인스턴스가있는 경우 무언가를 수행하는 함수를 만들고 싶습니다. 누구든지 전화를 걸면 도움을 많이 주셔서 감사합니다.

+1

'어떤 (단어 == 개념 단어에 대한 키워드 [ '이름'])' –

+0

@GarbageCollector 내가있어'객체 형식 오류를 iterable'되지 않은 'BOOL'. – solo

+0

다시 시도하십시오. –

답변

3

당신은 당신에게 keyword를 확인할 수있는 연산자를 사용할 수는 그들이에있는 모든 \n 사용을 제거하기 위해 \n로 끝나는하지 않는 경우 요소를 나열에만 적용 그러나 목록 memnber concept['name']

>>> keyword = "car" 
>>> concept['name'] = ['car', 'carr', 'carrrr'] 
>>> any(word == keyword for word in concept['name']) 
>>> True 

의에 나타납니다 전처리 목록은 다음과 같이

>>> clean_list = list(map(lambda s: s.strip(), concept['name'])) 
+0

흠. 나는 any 연산자를 사용하기 전에 목록을 전처리 한 다음, 요소 중 하나라도 키워드와 동일한 값을 가지면 True를 반환하는 if-then 문을 실행했지만 이전과 같은 결과가 나타납니다. True 이전의 Falses. 적어도 하나의 키워드 인스턴스가 목록에 존재하면 다른 거짓 연산없이 True를 반환하도록 콘솔을 가져올 수 있습니까? – solo

+0

당신의 키워드가'list'이지 않는 한 그것은 가능하지 않습니다. 정확한 솔루션을 게시하여 –

+0

확인을 할 수 있습니까? 나는 깨기 전에 무언가를하는 성명서를 작성했다. 지금은 효과가있다. 'clean_list = list (map (lambda s : s.strip(), concept [ 'name']))','있다면 (단어 == 개념 [ 'name']에있는 단어의 키워드) :','print (True)','else :','print (False)'를 사용합니다. – solo