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', “哦”, “ppl”, ‘r’, 're', “塔尔”, '轨道')
您检查的是子字符串匹配,而不是单词匹配。在
只需更改:
收件人:
^{pr2}$将
frontvar
字符串拆分为一个列表将匹配frontvar
中的单词,而不是字符串中的字符。在要只匹配
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
中的每个词也是frontvar
中的一个词,那么这将得到listvar
中的任何内容。(我在这里用“word”来描述用空格分隔的子字符串。)我不确定这是否真的是你想要的,你的问题我有点不清楚,我没有足够的声誉来评论。如果你做得更复杂一点的话。在
相关问题 更多 >
编程相关推荐