2014-06-13 5 views
4

문자열 목록의 존재 여부에 따라 일부 텍스트를 허용하거나 거부하는 스크립트를 만들어야합니다.목록에있는 문자열 요소가 문자열 목록에 포함되어 있는지 찾기

I가 거절기구 표기 키워드 목록 가지고 그 문자열 요소 중 하나가 I 아래 제시 목록에서 발견되면

k_out = ['word1', 'word2', 'some larger text'] 

를 목록 거부로 표시되어야 .

flag_r = False 
for text in k_out: 
    for lst in c_lst: 
     if text in lst: 
      flag_r = True 

이것에 대해가는 더 파이썬 방법이 :

c_lst = ['This is some text that contains no rejected word', 'This is some larger text which means this list should be rejected'] 

이 내가있어 무엇 :이 확인해야 목록을입니까?

+0

이 질문은에 http://codereview.stackexchange.com 속해 있기 때문에 오프 주제의 – jonrsharpe

+0

가능한 중복 [파이썬으로 나타납니다 다른 요소의 하위 문자열 인 문자열 목록] (http://stackoverflow.com/questions/21720199/python-remove-any-element-from-a-list-of-strings-that-is-a-substring -of-anothe) – dg99

+0

중복 일지 모르지만 다른 질문보다 나은 답변이 있습니다. – Vorticity

답변

6
당신은 any을 사용할 수 있습니다

generator expression : -에서 모든 요소를 ​​제거

>>> k_out = ['word1', 'word2', 'some larger text'] 
>>> c_lst = ['This is some text that contains no rejected word', 'This is some larger text which means this list should be rejected'] 
>>> any(keyword in string for string in c_lst for keyword in k_out) 
True 
>>> 
+0

이 질문에 실제로 대답합니까? OP는'k_out'리스트에있는 어떤 단어라도'c_lst'에서 발견되면리스트가 거부되기를 원합니다. 위의 코드는 올바르게 설계된 경우 false를 반환해야합니다. – smac89

+0

@ Smac89 - 질문을 해석하는 방법에 따라 다릅니다. OP는 "그 ** 문자열 요소 **가 발견되면 목록은 거부 된 것으로 표시되어야합니다"라고 말했다. "문자열 요소"는'k_out'의 하위 문자열을 의미하는 것으로 이해했습니다. 내 솔루션이 OP와 동일한 출력을 생성한다는 것을 알게 될 것입니다. 그것은 그것을하는 단지 더 컴팩트 한 방법입니다. – iCodez

+0

전화를 통해보고 있기 때문에 전체 목록이 표시되지 않았습니다. 좋아, 왜 지금이 작품을 볼 수 있습니다. – smac89

관련 문제