Python 删除重复项(非重复项)时列表中的IP地址格式设置 这不是一个重复的问题。我已经研究了提供的链接和建议没有帮助。我确实提出了一个新问题,希望能提供一些澄清。
让我澄清我的问题: 我的最终目标是从列表中删除重复的IP地址。我主要需要以下问题的帮助:每当我尝试应用代码(itertools、“for”循环等)从输出中删除重复项时,我总是遇到维护IP地址完整性的问题 总之: 1.我的输出是一个包含匹配字符串(ip地址)的元组 2.我将元组转换为列表列表-打印(hop_列表) 3.我在列表列表上索引[0]以获取我需要的IP地址-打印(ips) 这就是问题所在吗?输出看起来不像列表列表? 4.我应用各种代码解决方案来删除重复地址,但由于某些原因,我失去了IP地址的完整性 根据exscript api文档: •anymatch:如果找到匹配项且正则表达式有多个组,则返回包含组中匹配字符串的元组Python 删除重复项(非重复项)时列表中的IP地址格式设置 这不是一个重复的问题。我已经研究了提供的链接和建议没有帮助。我确实提出了一个新问题,希望能提供一些澄清。,python,string,list,ip,duplicates,Python,String,List,Ip,Duplicates,让我澄清我的问题: 我的最终目标是从列表中删除重复的IP地址。我主要需要以下问题的帮助:每当我尝试应用代码(itertools、“for”循环等)从输出中删除重复项时,我总是遇到维护IP地址完整性的问题 总之: 1.我的输出是一个包含匹配字符串(ip地址)的元组 2.我将元组转换为列表列表-打印(hop_列表) 3.我在列表列表上索引[0]以获取我需要的IP地址-打印(ips) 这就是问题所在吗?输出看起来不像列表列表? 4.我应用各种代码解决方案来删除重复地址,但由于某些原因,我失去了IP地址
def ios_commands(job, host, conn): #function to execute IOS commands
conn.execute('terminal length 0')
conn.execute('tr {}'.format(DesAddr))
print('The results of the traceroute', repr(conn.response))
for hops in any_match(conn, r"((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)([ (\[]?(\.|dot)[ )\]]?(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3})"):
hop_list = list(hops) #create a list from tuple
ips = hop_list[0] #index on targeted addresses
print(list(uniqify(ips))) #filter out duplicates
print(hop_list)#到目前为止还不错,tuple中的列表列表
['192.33.12.4','192','4','4']
['192.33.12.4','192','4','4']
['192.32.0.174','192','.174','174'.'
['192.32.0.190','192','.190','190'.'
['192.33.226.225','192','0.225','225']
['192.33.226.237','192','.237','237','237']
['192.33.12.4','192','4','4']
打印(ips)#索引第一个值,因为这是我需要的地址
我期待着像这样的事情:['192.33.12.4','192.33.12.4',等等]
192.33.12.4
192.33.12.4
192.32.0.174
192.32.0.190
192.33.226.225
192.33.226.237
192.33.12.4
打印(列表(uniqify(ips)))
这是一个经过编辑的示例输出,在这里我遇到了地址格式的问题
['1','9','3','2','4']
set(yourList)
['1','9','3','2','4']
set(yourList)
['1','9','3','2','7','4']
['1','9','3','2','9']
['1','9','3','2','6','5']
['1','9','3','2','6','7']
['1','9','3','2','4']
set(yourList)
将删除任何重复的值您始终可以使用
ips\u as\u set=set(ips)
删除重复的IP,但这是一个批处理操作,会丢弃订单(这可能没问题)
如果要按顺序迭代IP并动态删除重复项,可以执行以下操作:
from __future__ import print_function
def uniqify(iterable):
seen = set()
for item in iterable:
if item not in seen:
seen.add(item)
yield item
for unique_item in uniqify([1, 2, 3, 4, 3, 2, 4, 5, 6, 7, 6, 8, 8]):
print(unique_item, end=' ')
print()
输出:
1 2 3 4 5 6 7 8
我通过谷歌搜索你问题的(原始)标题找到了这个链接。谢谢你到目前为止的回复。不幸的是,对于set(yourlist)和def uniqify(iterable)这两个响应,我得到的结果都不保留IP地址格式,而是将其分解为单独的值。仅供参考,我确实需要保留订单。thanksI发布在上,因为没有一个答案使用生成器。@J.Chan,你说它将其分解为单个值是什么意思?uniqify(iterable)1 0的结果。3 2 4 1 0 . 3 2 4 1 0 . 3 2 7 4 1 0 . 3 2 9 1 0 . 3 2 6 5 1 0 . 3 2 6 7 1 0 . 3.2.4集合(yourlist)结果:集合(['.','1','0','3','2','4'])集合(['.','1','0','3','2','4','7'])集合(['.','1','0','3','2','2','2','2','4'])集合(['.','1','0','3','2','7','6'])集合(['.','1','0','3','2','7','6'])集合(['.','1','1','0','3','3','2','2','4'])代码是什么?