代码之家  ›  专栏  ›  技术社区  ›  singularity2047

如何匹配字符串并返回最匹配的单词

  •  0
  • singularity2047  · 技术社区  · 2 年前

    我试图在一个句子中查找一个关键词并返回整个单词。例如,我的关键字是“str”,如果all_text中有“str“匹配项,我想返回“string”。

    all_text = 'some rather long string'
    keyword_list = ['str', 'rat', 'me', 'ng']
    
    
    for item in keyword_list:
          if item in all_text:
                print(item)
    
    str
    rat
    me
    ng
    

    我想返回字符串,而不是str,rat,me,ng,更确切地说,一些,long。

    0 回复  |  直到 2 年前
        1
  •  2
  •   Nick    2 年前

    这里有几种方法可以做到这一点。首先,你可以把句子分成单词,看看单词中是否包含文本:

    all_text = 'some rather long string'
    keyword_list = ['str', 'rat', 'me', 'ng']
    
    words = [word for word in all_text.split() if any(key in word for key in keyword_list)]
    

    或者,您可以构建一个正则表达式,该正则表达式将与关键字周围的单词相匹配:

    import re
    
    regex = re.compile(fr'\b\w*(?:{"|".join(keyword_list)})\w*\b')
    words = re.findall(regex, all_text)
    

    在这两种情况下,输出都是

    ['some', 'rather', 'long', 'string']
    
        2
  •  1
  •   Naveed    2 年前

    这里有一种方法,使用python而不是panda

    import re
    
    #create an OR statement with all the keywords
    s='|'.join(keyword_list)
    
    # split the sentence at space, and iterate through it
    for w in all_text.split(' '):
    
    # check if word is in the search-words-list
        if (len(re.findall(s, w, re.IGNORECASE) ) >0) :
    
    # print when found
            print (w)
    
    
    some
    rather
    long
    string