복붙노트

[PYTHON] 다른 문자열의 단어 목록 확인 [duplicate]

PYTHON

다른 문자열의 단어 목록 확인 [duplicate]

나는 파이썬에서 그런 일을 할 수있다.

l = ['one', 'two', 'three']
if 'some word' in l:
   ...

이것은 'some word'가 목록에 있는지 확인합니다. 하지만 내가 반대로 할 수 있을까?

l = ['one', 'two', 'three']
if l in 'some one long two phrase three':
    ...

배열의 일부 단어가 문자열에 있는지 확인해야합니다. 사이클을 사용하여이 작업을 수행 할 수 있지만이 방법은 코드 줄이 더 많습니다.

해결법

  1. ==============================

    1.

    if any(word in 'some one long two phrase three' for word in list_):
    
  2. ==============================

    2.단어 목록에 상당한 길이가 있고이 테스트를 여러 번 수행해야하는 경우 목록을 세트로 변환하고 테스트 교차로를 사용하는 것이 좋습니다 (실제 단어를 얻을 수있는 추가 이점이 있음). 두 목록에서) :

    단어 목록에 상당한 길이가 있고이 테스트를 여러 번 수행해야하는 경우 목록을 세트로 변환하고 테스트 교차로를 사용하는 것이 좋습니다 (실제 단어를 얻을 수있는 추가 이점이 있음). 두 목록에서) :

    >>> long_word_list = 'some one long two phrase three about above along after against'
    >>> long_word_set = set(long_word_list.split())
    >>> set('word along river'.split()) & long_word_set
    set(['along'])
    
  3. ==============================

    3.컨텍스트에 따라 KennyTM의 대답보다 빠르고 더 적합 할 수있는 몇 가지 대체 방법이 있습니다.

    컨텍스트에 따라 KennyTM의 대답보다 빠르고 더 적합 할 수있는 몇 가지 대체 방법이 있습니다.

    1) 정규식을 사용하십시오.

    import re
    words_re = re.compile("|".join(list_of_words))
    
    if words_re.search('some one long two phrase three'):
       # do logic you want to perform
    

    2) 단어 전체를 일치 시키려면 세트를 사용할 수 있습니다. 당신은 "그들 theorems은 이론적이다"라는 문구에서 "the"라는 단어를 찾고 싶지 않습니다 :

    word_set = set(list_of_words)
    phrase_set = set('some one long two phrase three'.split())
    if word_set.intersection(phrase_set):
        # do stuff
    

    물론 "\ b"토큰을 사용하여 regex로 전체 단어 일치를 수행 할 수도 있습니다.

    이들과 Kenny의 솔루션의 성능은 단어 목록과 문구 문자열의 길이와 얼마나 자주 변경되는지와 같은 여러 요소에 따라 달라집니다. 성능이 문제가 아니라면 가장 단순한 것으로 이동하십시오. 아마도 Kenny 's 일 것입니다.

  4. ==============================

    4.이 문제를 해결하는 가장 쉽고 간단한 방법은

    이 문제를 해결하는 가장 쉽고 간단한 방법은

    import re
    
    search_list = ['one', 'two', 'there']
    long_string = 'some one long two phrase three'
    if re.compile('|'.join(search_list),re.IGNORECASE).search(long_string): #re.IGNORECASE is used to ignore case
        # Do Something if word is present
    else:
        # Do Something else if word is not present
    
  5. from https://stackoverflow.com/questions/3271478/check-list-of-words-in-another-string by cc-by-sa and MIT license