作为一个爱好项目,我试图在互联网上建立一个公共可用路线听众的网格,为此,我登录到所有这些听众,询问他们认识谁,谁与他们有直接联系。很好,现在我正试着配对。你知道吗
数学很简单,如果IP地址的最后一个八位字节是偶数,那么它的伙伴必须是下一个奇数,反之亦然(有些例外,但我是手动操作的)
现在如果你在这里运行脚本,你不会得到任何结果,我这样做是为了说明一个问题,我不知道我如何反向解决问题。你知道吗
运行这个,我将不会得到任何错误,但如果我添加另一个元素到列表中
['ROUTER5124-A', '100.127.126.16', 'te0/0/24']
我得到这个错误:
Traceback (most recent call last):
File "zac.py", line 38, in <module>
linknetsloop.remove(sublist)
ValueError: list.remove(x): x not in list
如果我把里面的东西打印出来linknetsloop.remove删除(子列表)和 linknetsloop.remove删除(items)它想要删除我添加的额外元素,实际上是两次。这很奇怪,因为它是搭档。17甚至不在那里。我认为错误是我在列表中循环错误,但我在搜索了几个小时后找不到我的错误。你知道吗
#!/usr/bin/python3.5
import re
import ipaddress
linknets = [
['ROUTER1190-A', '100.127.126.81', 'te0/0/2'] ,
['ROUTER1190-A', '100.127.126.83', 'te0/0/3'] ,
['ROUTER1323-A', '100.127.126.125', 'te0/0/24'] ,
['ROUTER1323-A', '100.127.126.97', 'te0/0/25'] ,
['ROUTER1242-B', '100.127.126.173', 'te0/0/25'] ,
['ROUTER1190-B', '100.127.126.55', 'te0/0/24'] ,
['ROUTER1190-B', '100.127.126.57', 'te0/0/25'] ,
['ROUTER1190-C', '100.127.126.171', 'te0/0/24'] ,
['ROUTER1190-C', '100.127.126.59', 'te0/0/25'] ,
['ROUTER5345-A', '100.127.126.25', 'te1/0/12'] ,
['ROUTER5345-A', '100.127.126.47', 'te2/0/12'] ,
['ROUTER1610-A', '100.127.126.69', 'te0/0/24'] ,
['ROUTERP-1242', '100.127.126.85', 'eth1/1/3'] ,
['ROUTERP-1242', '100.127.126.63', 'eth1/1/4'] ,
['ROUTERP-1242', '100.127.126.104', 'eth1/2/1'] ,
]
linknetsloop = linknets
linknets_complete = []
for sublist in linknets:
search = 0
lastoctet = re.match('.*?([0-9]+)$', sublist[1]).group(1)
if int(lastoctet)%2==0: #Last octet is even
search = ipaddress.IPv4Address(sublist[1]) + 1
else:
search = ipaddress.IPv4Address(sublist[1]) - 1
for items in linknets:
if str(search) in items[1]:
print(sublist)
linknetsloop.remove(sublist)
linknetsloop.remove(items)
任何提示都将不胜感激
很可能您想复制
linknets
的内容:您的原始代码不会复制列表,而只是为同一列表创建别名。然后你对它进行迭代,并在迭代时更改它的内容,这将导致意外的结果。你知道吗
然后,对
linknests
执行双循环并执行双删除:当
sublist==items
和具有该值的项只存在一次时,这将引发ValueError
异常。所以你必须考虑这种情况。你知道吗另外,您可能在以下方面有缺陷:
您不是在比较字符串,而是在匹配字符串。因此,如果您的
search
是'10.127.126.16',它将与'210.127.126.168'匹配,例如。你知道吗相关问题 更多 >
编程相关推荐