Python - 如何搜索字典键以查看它是否包含某个字符串
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python - 如何搜索字典键以查看它是否包含某个字符串相关的知识,希望对你有一定的参考价值。
我试图尽我所能地说出我的问题,因为我不确定这是不是我正在寻找的,对不起提前抱歉。
我正在使用feedparser
解析RSS提要。
根据文档,我能够将我的结果解析为某个漏洞+ RSS帖子标题的链接。
这是我的代码:
import feedparser
# product variables
ie = ['Internet Explorer', 'IE', 'Explorer', 'Internet_Explorer']
nix = ['Linux', 'SUSE', 'Red Hat', 'RHEL', 'Ubuntu', 'Debian_Linux']
win = ['Windows_']
# NVD RSS feed variable
d = feedparser.parse('https://nvd.nist.gov/feeds/xml/cve/misc/nvd-rss- analyzed.xml')
print("================================")
print(d['feed']['title'])
print("================================")
for entry in d.entries:
print(entry.title, entry.link)
这将返回如下所示的结果:
CVE-2018-8132 (windows_10, windows_server_2016) https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2018-8132
我也试过解析原始数据,这是:
for entry in d.entries:
print(entry)
现在这告诉我,title
是字典中的关键(我认为),值为CVE-2018-8132 (windows_10, windows_server_2016)
我想做的是一个if
语句,如下所示:如果titlevalue包含一个单词(从顶部列表中)然后做一些事情
我在feedparser
的文档中找不到如何做到这一点。我真的很感激任何帮助。
编辑(2018-06-15):
我想到了。
这是我的代码,无论是谁在将来寻找它:
# library imports
import feedparser
import re
import smtplib
import datetime
import time
# NVD RSS feed variable
d = feedparser.parse('https://nvd.nist.gov/feeds/xml/cve/misc/nvd-rss- analyzed.xml')
print("\n+++++++++++++++++++++++++++++++++++++++")
print(d['feed']['title'], 'Scanner')
print("+++++++++++++++++++++++++++++++++++++++\n")
# function for iterating through the entries and printing out how many vulns there are
def product_scan(product_name):
# vulnerability links list
vuln_list = []
# counter for how many vulns per product
count = 0
for entry in d.entries:
if product_name in entry.title:
count += 1
# here we append the hyperlinks of the CVEs to a pre-defined list so we can manipulate it later
vuln_list.append(entry.link)
# making it look nice
if count == 1:
print('===============================================================\nThere is', count, product_name,
'related vulnerability:')
elif count == 0:
print('')
else:
print('===============================================================\nThere are', count, product_name,
'related vulnerabilities:')
# this for loop is for enumerating the links for each product CVE code
for x in vuln_list:
print(x)
# calling the function and searching for vulns based on keyword(s)
product_list = ['mysql', 'windows', 'linux', 'explorer', 'php', 'webex', 'firefox', 'norton', 'mcafee', 'symantec']
for product in product_list:
product_scan(product)
答案
Geronimo,如果你只想检查一个键是否在字典中,你可以使用in
关键字
d = {'abc':'123','bbg':'456','tig':'567'}
if 'abc' in d:
print("key is in here")
如果你想用过滤的键和值做更多的事情,你可以使用字典理解创建一个单独的字典(类似于列表理解,但对于dicts)Filter dict to contain only certain keys?
以上是关于Python - 如何搜索字典键以查看它是否包含某个字符串的主要内容,如果未能解决你的问题,请参考以下文章
如何在嵌套的 Python 字典中搜索匹配的数据框值,然后更新数据框?