Python 删除重复项(非重复项)时列表中的IP地址格式设置 这不是一个重复的问题。我已经研究了提供的链接和建议没有帮助。我确实提出了一个新问题,希望能提供一些澄清。

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地址

让我澄清我的问题: 我的最终目标是从列表中删除重复的IP地址。我主要需要以下问题的帮助:每当我尝试应用代码(itertools、“for”循环等)从输出中删除重复项时,我总是遇到维护IP地址完整性的问题

总之:

1.我的输出是一个包含匹配字符串(ip地址)的元组

2.我将元组转换为列表列表-打印(hop_列表)

3.我在列表列表上索引[0]以获取我需要的IP地址-打印(ips) 这就是问题所在吗?输出看起来不像列表列表?

4.我应用各种代码解决方案来删除重复地址,但由于某些原因,我失去了IP地址的完整性

根据exscript api文档: •anymatch:如果找到匹配项且正则表达式有多个组,则返回包含组中匹配字符串的元组

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'])代码是什么?