我有一个命令show interface transciever,其输出可能会有所不同。我收集了针对不同场景的该命令的一些示例输出。
Ethernet1/2
transceiver is present
type is 1000base-T
name is CISCO-METHODE
part number is SP7041-E-R
revision is --
serial number is MTC19350BBK
nominal bitrate is 1300 MBit/sec
Link length supported for copper is 100 m
cisco id is 3
cisco extended id number is 4
Ethernet1/3
transceiver is present
type is 1000base-T
name is CISCO-METHODE
part number is SP7041-E
revision is E
serial number is MTC150303LW
nominal bitrate is 1300 MBit/sec
Link length supported for copper is 100 m
cisco id is 3
cisco extended id number is 4
Ethernet1/4
transceiver is present
type is 1000base-T
name is CISCO-METHODE
part number is SP7041-E
revision is E
serial number is MTC1731072M
nominal bitrate is 1300 MBit/sec
Link length supported for copper is 100 m
cisco id is 3
cisco extended id number is 4
Ethernet1/5
transceiver is not present
Ethernet1/6
transceiver is not present
Ethernet1/7
transceiver is present
type is 10Gbase-SR
name is CISCO-AVAGO
part number is SFBR-709SMZ-CS1
revision is G4.1
serial number is AVD1718A4WN
nominal bitrate is 10300 MBit/sec
Link length supported for 50/125um OM2 fiber is 82 m
Link length supported for 62.5/125um fiber is 26 m
Link length supported for 50/125um OM3 fiber is 300 m
cisco id is 3
cisco extended id number is 4
cisco part number is 10-2415-03
cisco product id is SFP-10G-SR
cisco vendor id is V03一些样本。我想比较这些不同的样本,并确定潜在的键和值。
比如:
transceiver is可以是键,present/not present可以是值。类似地,我希望解析这些输出示例以识别其他键和值。是否有一个标准算法,可以把我带到正确的方向来实现这一点。
发布于 2019-03-30 16:55:09
我不知道标准算法,但在这个示例中,您应该搜索' is '实例,并将键定义为前面的文本,值定义为后续文本。
下面是一个示例:
# Sample data
string = '''Ethernet1/2
transceiver is present
type is 1000base-T
name is CISCO-METHODE
part number is SP7041-E-R
revision is --
serial number is MTC19350BBK
nominal bitrate is 1300 MBit/sec
Link length supported for copper is 100 m
cisco id is 3
cisco extended id number is 4'''
sub = string.split('\n')
d = {}
d[sub[0]] = [x.strip() for x in sub[1:]]
e = {}
for key in d.keys():
e[key] = {}
for item in d[key]:
new = item.split(' is ')
e[key][new[0]] = new[1]
print(e){'Ethernet1/2':
{'transceiver': 'present',
'type': '1000base-T',
'name': 'CISCO-METHODE',
'part number': 'SP7041-E-R',
'revision': '--',
'serial number': 'MTC19350BBK',
'nominal bitrate': '1300 MBit/sec',
'Link length supported for copper': '100 m',
'cisco id': '3',
'cisco extended id number': '4'}}如果有多个级别的实例,则可以通过额外的解析来识别这些实例,例如搜索' for '实例和重复流程。
https://stackoverflow.com/questions/55433635
复制相似问题