frontvar="risk management system application tracking system digital signature computer systems "
listvar = ['c','computer system','tracking','management',etc]
matchedkeys =[i for i in listvar if i in frontvar]
output :['c',
'ca',
'com',
'computer systems',
'eme',
'git',
'io',
'man',
'management',
'nat',
'om',
'ppl',
'r',
're',
'tal',
'track',
'tracking']
列表(listvar)很大
我想打印完全匹配的单词,例如计算机,计算机系统,风险管理系统等。它不应打印垃圾值,例如('nat', 'om', 'ppl', 'r', '回覆', “ tal”, 'track')
答案 0 :(得分:1)
您要检查的是子串匹配,而不是单词匹配。
只需更改:
matchedkeys = [i for i in listvar if i in frontvar]
收件人:
matchedkeys = [i for i in listvar if i in frontvar.split()]
将frontvar
字符串拆分为列表将与frontvar
中的单词而不是字符串中的字符匹配。
答案 1 :(得分:0)
要仅匹配frontvar
中的单个单词,只需进行更改
matchedkeys = [i for i in listvar if i in frontvar]
到
matchedkeys = [i for i in listvar if i in frontvar.split()]
如@mVChr建议。
要匹配多个单词,我建议按照mVChr的建议使用元组(不确定为什么对您不起作用,您必须发布更新),或执行以下操作:
matchedkeys = [i for i in listvar if all([j in frontvar.split() for j in i.split()])]
如果listvar
中的每个单词也都是listvar
中的一个单词,这将得到frontvar
中的任何内容。 (我在这里使用“单词”来描述用空格分隔的子字符串。)
我不确定这是否真的是您想要的,您的问题对我来说有点不清楚,而且我没有足够的声誉来发表评论。如果您要做的事情比较复杂,则使用正则表达式也可以。