首页 > 解决方案 > 选择至少包含一个字符串的字符串作为子字符串

问题描述

我有一个术语列表:

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

标签: pythonstringfor-looplist-comprehensionstring-matching

解决方案


使用append而不是extend——谷歌区别:-)

一个不错的 Pythonic 解决方案是这种带有条件的双重列表理解:

[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'
]

这能让你得到你所追求的吗?


推荐阅读