将字符串与列表进行比较,并在python中仅打印匹配的关键字

时间:2018-07-24 19:25:23

标签: python regex string list

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')

2 个答案:

答案 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中的任何内容。 (我在这里使用“单词”来描述用空格分隔的子字符串。)

我不确定这是否真的是您想要的,您的问题对我来说有点不清楚,而且我没有足够的声誉来发表评论。如果您要做的事情比较复杂,则使用正则表达式也可以。

相关问题