亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將輸出轉換為字典

將輸出轉換為字典

慕勒3428872 2022-06-14 16:38:06
以下輸出需要在字典中打印VLAN Name                             Status    Ports---- -------------------------------- --------- -------------------------------1    default                          active    Po1, Eth1/1, Eth1/2, Eth1/3                                                Eth1/4, Eth1/5, Eth1/6, Eth1/7                                                Eth1/8, Eth1/9, Eth1/10, Eth1/11                                                Eth1/12, Eth1/13, Eth1/14                                                Eth1/15, Eth1/16, Eth1/17                                                Eth1/18, Eth1/19, Eth1/20                                                Eth1/21, Eth1/22, Eth1/23                                                Eth1/24, Eth1/25, Eth1/26                                                Eth1/27, Eth1/28, Eth1/29                                                Eth1/30, Eth1/31, Eth1/32所需輸出:[{'vlan_id': '1', 'name': 'default', 'status': 'active', 'interfaces': ['Po1', 'Po525', 'Eth1/33', 'Eth1/34', 'Eth1/35', 'Eth1/36', 'Eth1/38', 'Eth1/45', 'Eth1/46', 'Eth1/47', 'Eth1/48', 'Eth1/49', 'Eth1/50', 'Eth1/51', 'Eth1/52', 'Eth2/2', 'Eth2/21', 'Eth2/22', 'Eth2/23', 'Eth2/24', 'Eth2/25', 'Eth2/26', 'Eth3/1', 'Eth3/2', 'Eth3/3', 'Eth3/4', 'Eth3/7', 'Eth3/8', 'Eth3/9', 'Eth3/10', 'Eth3/11', 'Eth3/12', 'Eth3/13', 'Eth3/14', 'Eth3/15', 'Eth3/16', 'Eth3/17', 'Eth3/18', 'Eth3/19', 'Eth3/20', 'Eth3/21', 'Eth3/22', 'Eth3/23', 'Eth3/24', 'Eth3/25', 'Eth3/26']}]
查看完整描述

3 回答

?
尚方寶劍之說

TA貢獻1788條經驗 獲得超4個贊

嘗試這個 :


import ntc_templates

from ntc_templates.parse import parse_output


vlan_output = (

"VLAN Name                             Status    Ports\n"

"---- -------------------------------- --------- -------------------------------\n"

"1    default                          active    Po1, Eth1/1, Eth1/2, Eth1/3\n"

"                                                Eth1/4, Eth1/5, Eth1/6, Eth1/7\n"

"                                                Eth1/8, Eth1/9, Eth1/10, Eth1/11\n"

"                                                Eth1/12, Eth1/13, Eth1/14\n"

"                                                Eth1/15, Eth1/16, Eth1/17\n"

"                                                Eth1/18, Eth1/19, Eth1/20\n"

"                                                Eth1/21, Eth1/22, Eth1/23\n"

"                                                Eth1/24, Eth1/25, Eth1/26\n"

"                                                Eth1/27, Eth1/28, Eth1/29\n"

"                                                Eth1/30, Eth1/31, Eth1/32\n"

"                                                Eth1/33, Eth1/34, Eth1/35\n"

"                                                Eth1/36, Eth1/38, Eth1/39\n"

"                                                Eth1/40, Eth1/41, Eth1/42\n"

"                                                Eth1/43, Eth1/44, Eth1/45\n"

"                                                Eth1/46, Eth1/47, Eth1/48\n"

"10   test                             active    Po1, Eth1/37, Eth1/41, Eth1/42\n"

"                                                Eth1/43, Eth1/44, Eth1/45\n"

"                                                Eth1/46, Eth1/47, Eth1/48\n")


vlan_parsed = parse_output(platform="cisco_ios", command="show vlan", data=vlan_output)

print(vlan_parsed)

它將返回一個這樣的字典:


[{'vlan_id': '1', 'name': 'default', 'status': 'active', 'interfaces': ['Po1', 'Eth1/1', 'Eth1/2', 'Eth1/3', 'Eth1/4', 'Eth1/5', 'Eth1/6', 'Eth1/7', 'Eth1/8', 'Eth1/9', 'Eth1/10', 'Eth1/11', 'Eth1/12', 'Eth1/13', 'Eth1/14', 'Eth1/15', 'Eth1/16', 'Eth1/17', 'Eth1/18', 'Eth1/19', 'Eth1/20', 'Eth1/21', 'Eth1/22', 'Eth1/23', 'Eth1/24', 'Eth1/25', 'Eth1/26', 'Eth1/27', 'Eth1/28', 'Eth1/29', 'Eth1/30', 'Eth1/31', 'Eth1/32', 'Eth1/33', 'Eth1/34', 'Eth1/35', 'Eth1/36', 'Eth1/38', 'Eth1/39', 'Eth1/40', 'Eth1/41', 'Eth1/42', 'Eth1/43', 'Eth1/44', 'Eth1/45', 'Eth1/46', 'Eth1/47', 'Eth1/48']}, {'vlan_id': '10', 'name': 'test', 'status': 'active', 'interfaces': ['Po1', 'Eth1/37', 'Eth1/41', 'Eth1/42', 'Eth1/43', 'Eth1/44', 'Eth1/45', 'Eth1/46', 'Eth1/47', 'Eth1/48']}]

安裝 ntc_templates 時要小心(例如使用 pip install ntc_templates)。


它將使用已經可以安裝的 textfsm 模塊。如果你遇到:


ModuleNotFoundError: No module named 'clitable'

趕緊跑 :


pip install --upgrade textfsm==0.4.1

并再次運行腳本


查看完整回答
反對 回復 2022-06-14
?
吃雞游戲

TA貢獻1829條經驗 獲得超7個贊

在數據中的值之間添加逗號,從而制作一個 csv 文件。然后按照以下關于將 csv(和 excel)轉換為 JSON 的 Web 文章頂部的說明進行操作。您所需的輸出是 JSON 格式。


https://medium.com/coinmonks/parsing-a-spreadsheet-into-a-json-file-using-python-6118f5c70bd3


從與開始


導入csv、json


查看完整回答
反對 回復 2022-06-14
?
九州編程

TA貢獻1785條經驗 獲得超4個贊

它涉及很多解析。我希望下面的代碼片段有助于這樣做


s = """VLAN Name                             Status    Ports

---- -------------------------------- --------- -------------------------------

1    default                          active    Po1, Eth1/1, Eth1/2, Eth1/3

                                                Eth1/4, Eth1/5, Eth1/6, Eth1/7

                                                Eth1/8, Eth1/9, Eth1/10, Eth1/11

                                                Eth1/12, Eth1/13, Eth1/14

                                                Eth1/15, Eth1/16, Eth1/17

                                                Eth1/18, Eth1/19, Eth1/20

                                                Eth1/21, Eth1/22, Eth1/23

                                                Eth1/24, Eth1/25, Eth1/26

                                                Eth1/27, Eth1/28, Eth1/29

                                                Eth1/30, Eth1/31, Eth1/32

                                                Eth1/33, Eth1/34, Eth1/35

                                                Eth1/36, Eth1/38, Eth1/39

                                                Eth1/40, Eth1/41, Eth1/42

                                                Eth1/43, Eth1/44, Eth1/45

                                                Eth1/46, Eth1/47, Eth1/48

10   test                             active    Po1, Eth1/37, Eth1/41, Eth1/42

                                                Eth1/43, Eth1/44, Eth1/45

                                                Eth1/46, Eth1/47, Eth1/48"""


new_line_split = s.split("\n")

headers = list(filter(None, new_line_split[0].split(" ")))

print(headers)

sessions_data = []

ports = []

session = {}

for line in new_line_split[2:]:

    values = list(filter(None,line.split(" ")))


    for index, value in enumerate(values):

        if value.startswith("Eth", 0) or value.startswith("Po", 0):

            ports.append(value.strip(","))

            session[headers[3]] = ports

        elif index in [0,1,2]:


            if index == 0:

                session = {}

                ports = []

            elif bool(session):

                sessions_data.append(session)

            session[headers[index]] = value


print(sessions_data)


查看完整回答
反對 回復 2022-06-14
  • 3 回答
  • 0 關注
  • 134 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號