簡體   English   中英

解析字典以查找特定字符串

[英]Parse dictionary looking for a specific string

我正在編寫一個Python腳本來對我們的Cisco ASA防火牆進行API調用,並且將從防火牆返回的信息放入字典中。 然后,我需要解析該詞典以查找特定的字符串。 問題是,這里有1個鍵,看起來是一個很大的值。 我插入了一個從防火牆收到的輸出示例。

{u'response':[u'對象組網絡ng-enc-incoming-ftp-outside \\ n網絡對象1.1.1.1 255.255.255.128 \\ n網絡對象主機2.2.2.2 \\ n網絡對象主機3.3.3.3 \\ n網絡對象主機4.4.4.4 \\ n網絡對象主機5.5.5.5]}

理想情況下,我想搜索此輸出以查找特定的IP,如果存在該IP,則顯示一條消息,指示該IP太多。 我似乎找不到一種很好的方法來解析一個很長的值,以查找特定的文本字符串。

如果僅想知道響應字符串中是否包含特定的IP,則可以使用in運算符:

if '2.2.2.2' in resp_dict['response'][0]:
    print('Found')

或廣義的:

ip = '2.2.2.2'
if ip in resp_dict['response'][0]:
    print('{} found'.format(ip))

提取所有IP,然后您可以在列表中搜索特定的IP地址或遍歷所有IP。 或者,您可以直接在字符串中搜索,如@DeepSpace所說

import re

d = {u'response': [u'object-group network ng-enc-incoming-ftp-outside\n network-object 1.1.1.1 255.255.255.128\n network-object host 2.2.2.2\n network-object host 3.3.3.3\n network-object host 4.4.4.4\n network-object host 5.5.5.5']}

ip = re.findall(r'(\d+\.\d+\.\d+\.\d+)', d['response'][0])  

>>> [u'1.1.1.1', u'255.255.255.128', u'2.2.2.2', u'3.3.3.3', u'4.4.4.4', u'5.5.5.5']

'1.1.1.1' in ip
>>> True

'1.1.1.2' in ip
>>> False

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM