删除重复项(不重复)时列表中的IP地址格式

时间:2015-08-25 22:56:08

标签: python string list ip duplicates

这不是一个重复的问题。我已经研究了提供的链接,但建议没有帮助。我确实开了一个新问题,希望能提供一些澄清。

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

总结:

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

2.I将元组转换为列表列表 - print(hop_list)

3.I列表中的索引[0]以获取我需要的IP地址 - print(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) #so far so good, list of lists from tuple

[' 192.33.12.4',' 192',' .4','。',' 4& #39]

[' 192.33.12.4',' 192',' .4','。',' 4& #39]

[' 192.32.0.174',' 192',' .174','。',' 174& #39]

[' 192.32.0.190',' 192',' .190','。',' 190& #39]

[' 192.33.226.225',' 192',' .225','。',' 225& #39]

[' 192.33.226.237',' 192',' .237','。',' 237& #39]

[' 192.33.12.4',' 192',' .4','。',' 4& #39]

打印(ips)#index第一个值,因为这是我需要的地址

我期待的是:[' 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']

[' 1',' 9','。',' 3',' 2', ' 4']

[' 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']

2 个答案:

答案 0 :(得分:1)

set(yourList)

将删除任何重复值

答案 1 :(得分:0)

您可以随时使用ips_as_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