Python 选择至少包含一个字符串的字符串作为子字符串

Python 选择至少包含一个字符串的字符串作为子字符串,python,string,for-loop,list-comprehension,string-matching,Python,String,For Loop,List Comprehension,String Matching,我有一个术语列表: terms = [ 'mani factor', 'manner', 'manufactur', 'manufactur distribut', 'manufactur facil', 'manufactur oper', 'manufactur process', 'march', 'margin', 'market advers', 'market condit'

我有一个术语列表:

terms = [
     'mani factor',
     'manner',
     'manufactur',
     'manufactur distribut',
     'manufactur facil',
     'manufactur oper',
     'manufactur process',
     'march',
     'margin',
     'market advers',
     'market condit',
     'market disrupt',
     'market price',
     'market product',
     'market result',
     'market risk',
     'market sale',
     'market share',
     'market valu',
     'materi advers',
     'materi advers affect',
     'materi advers effect',
     'materi advers impact',
     'materi affect',
     'materi impact'
]
和另一组术语b:

b = set(['risk','factor','effect','affect','impact'])
我想找到至少包含b中一个术语的术语。我尝试了以下方法:

for t in b:
    for term in terms:
        if t in term:
            a.extend(term)
它将导致以下输出:

'a', 'n', 'i', ' ', 'f', 'a', 'c', 't', 'o', 'r', 'e', 'c', 'o', 'n', 'o', 'm', ' ', 'f', 'a', 'c', 't', 'o', 'r', 'f', 'a', 'c', 't', 'o', 'r', ' ', 'a', 'f', 'f', 'e', 'c', 't', 'f', 'a', 'c', 't', 'o', 'r', ' ', 'c', 'a', 'u', 's', 'f', 'a', 'c', 't', 'o', 'r', ' ', 'c', 'o', 'n', 't', 'r', 'o
使用append而不是extend-用谷歌搜索差异:-

一个很好的python解决方案是使用条件的双列表理解:

[t for w in b for t in terms if w in t]
输出:

[
 'materi advers effect',
 'mani factor',
 'materi advers impact',
 'materi impact',
 'materi advers affect',
 'materi affect',
 'market risk'
]

这就是你想要的吗?谢谢。这起作用了。