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

2024-05-04 01:16:18 发布

您现在位置:Python中文网/ 问答频道 /正文

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', “塔尔”, '轨道')


Tags: inreapplicationpplsystemnatmanagementtracking
2条回答

您检查的是子字符串匹配,而不是单词匹配。在

只需更改:

matchedkeys = [i for i in listvar if i in frontvar]

收件人:

^{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”来描述用空格分隔的子字符串。)

我不确定这是否真的是你想要的,你的问题我有点不清楚,我没有足够的声誉来评论。如果你做得更复杂一点的话。在

相关问题 更多 >