如何将此输出格式化为数组/可用数据

2024-09-30 06:26:31 发布

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

我不是一个行业的编码员,而是一个正在学习为我的角色编码的基础设施工程师。我有一个输出,我得到,我正在努力思考如何才能让这个工作

我利用了我的一些同事,但数据输出的格式很奇怪,我不确定如何得到我想要的结果。我试过分线,但效果不太好

当前的代码很简单。它只是从开关中提取输出命令;然后我让它分线:

output = net_connect.send_command("show switch")
switchlines = output.splitlines()
print(output)
print(switchlines[5])

在这种情况下,它将输出以下内容:

Switch/Stack Mac Address : 188b.45ea.a000 - Local Mac Address
Mac persistency wait time: Indefinite
                                             H/W   Current
Switch#   Role    Mac Address     Priority Version  State 
------------------------------------------------------------
*1       Active   188b.45ea.a000     15     V01     Ready               
 2       Standby  00ca.e5fc.1780     14     V06     Ready               
 3       Member   00ca.e5fc.5e80     13     V06     Ready               
 4       Member   00ca.e588.f480     12     V06     Ready               
 5       Member   00ca.e588.ee80     11     V06     Ready               


*1       Active   188b.45ea.a000     15     V01     Ready

那张桌子看起来像一根绳子;从本质上说,我需要找到一种方法将其分割成可用的块(即一个2D数组),以便可以单独使用每个字段


Tags: outputaddressmacactivememberprint行业ready
1条回答
网友
1楼 · 发布于 2024-09-30 06:26:31

您已经在一个列表(switchlines)中分离了行,所以您所要做的就是遍历该列表,并在空间中^{}每个行。因为有许多空格分隔,所以我们也要^{}这些元素。所以你可以这样做:

res = []

for line in switchlines[5:]:
    elements = [x.strip() for x in line.split()]
    res.append(elements)

下面是你的例子:

[['*1', 'Active', '188b.45ea.a000', '15', 'V01', 'Ready'],
 ['2', 'Standby', '00ca.e5fc.1780', '14', 'V06', 'Ready'], 
 ['3', 'Member', '00ca.e5fc.5e80', '13', 'V06', 'Ready'], 
 ['4', 'Member', '00ca.e588.f480', '12', 'V06', 'Ready'], 
 ['5', 'Member', '00ca.e588.ee80', '11', 'V06', 'Ready']]

另一个稍后可以帮助您处理数据的选项是将数据收集到字典中,而不是列表中:

for line in switchlines[5:]:
    switch, role, mac, prio, ver, state, *extras = [x.strip() for x in line.split()]
    res.append({'switch': switch, 'role': role, 'mac': mac,
                'prio': prio, 'ver': ver, 'state': state, 'extras': extras})

下面是你的例子:

[{'switch': '*1', 'role': 'Active', 'mac': '188b.45ea.a000', 'prio': '15', 'ver': 'V01', 'state': 'Ready', 'extras': []},
 {'switch': '2', 'role': 'Standby', 'mac': '00ca.e5fc.1780', 'prio': '14', 'ver': 'V06', 'state': 'Ready', 'extras': []},
 {'switch': '3', 'role': 'Member', 'mac': '00ca.e5fc.5e80', 'prio': '13', 'ver': 'V06', 'state': 'Ready', 'extras': []},
 {'switch': '4', 'role': 'Member', 'mac': '00ca.e588.f480', 'prio': '12', 'ver': 'V06', 'state': 'Ready', 'extras': []},
 {'switch': '5', 'role': 'Member', 'mac': '00ca.e588.ee80', 'prio': '11', 'ver': 'V06', 'state': 'Ready', 'extras': []}]

相关问题 更多 >

    热门问题