snmpwalk:获取整数列表而不是字符串

时间:2016-02-25 14:49:18

标签: python snmp net-snmp

在我的python脚本中,我获取5个OID,每个OID返回一个整数 这是我的代码:

OIDs = []
res = []

OIs.append(netsnmp.VarList(netsnmp.Varbind('1.3.6.1.4.1.45.1.1.4.1')))
OIs.append(netsnmp.VarList(netsnmp.Varbind('1.3.6.1.4.1.45.1.1.4.2')))
OIs.append(netsnmp.VarList(netsnmp.Varbind('1.3.6.1.4.1.45.1.1.4.3')))
OIs.append(netsnmp.VarList(netsnmp.Varbind('1.3.6.1.4.1.45.1.1.4.4')))
OIs.append(netsnmp.VarList(netsnmp.Varbind('1.3.6.1.4.1.45.1.1.3.1')))

for i in range(len(OIDs)):
    res.append(netsnmp.snmpwlak(OIDs[i], Version = 2, DestHost='192.168.0.1', Community='public'))
return res

print res将该列表退回给我:

[('18',), ('13',), ('1',), ('2',), ('1',)]

OID返回的所有值都是整数

问题:

如何获得仅包含整数的列表,如下所示:

[18, 13, 1, 2, 1]

任何人都知道如何解决我的问题?

3 个答案:

答案 0 :(得分:2)

res = [('18',), ('13',), ('1',), ('2',), ('1',)]
res = [int(x[0]) for x in res] ## [18, 13, 1, 2, 1]

答案 1 :(得分:0)

使用map

a = [('18',), ('13',), ('1',), ('2',), ('1',)]

print(map(lambda x: int(x[0]), a))

输出:

[18, 13, 1, 2, 1]
  • 编辑*

虽然这有效,但列表理解更有效。看看this回答

答案 2 :(得分:0)

您可以使用列表理解:

[int(x[0]) for x in res]