【问题标题】:remove duplicate from list and check if IP's from one list in another list从列表中删除重复项并检查 IP 是否来自另一个列表中的一个列表
【发布时间】:2019-05-11 19:19:30
【问题描述】:

我必须保存 csv 文件。 第一个看起来像这样:

第二个包含IP列表:

139.15.250.196
139.15.5.176

我想检查第一个文件中的任何给定 IP 是否在第二个文件中。这个接缝可以工作(如果我的代码被破坏,请更正或提供提示)但问题是第一个文件包含许多重复值,例如10.0.0.1 可能出现 x 次,我无法找到删除重复项的方法。你能帮助我或指导吗?

import csv

filename = 'ip2.csv'
with open(filename) as f:
    reader = csv.reader(f)
    ip = []
    for row in reader:
        ip.append(row[0])


filename = 'bonk_https.csv'
with open(filename) as f:
    reader = csv.reader(f)
    ip_ext = []
    for row in reader:
        ip_ext.append(row[0])
        for a in ip:
            if a in ip_ext:
                print(a)

【问题讨论】:

标签: python python-3.x csv duplicates


【解决方案1】:

您可以使用set(list) 将任何列表转换为集合。一个集合只包含一个项目,可以像列表一样与member in set 进行比较。因此,只需将您的 ip 列表转换为一组即可。

with open(filename) as f:
    ip_ext = []
    for row in reader:
        ip_ext.append(row[0])
        for a in set(ip):
            if a in set(ip_ext): #well, you don't need a set her unless you also have duplicates in ip_ext
                print(a)

如果您找到您的条目,或者只是中断/继续。 This might help you with that

【讨论】:

  • 谢谢你,但你的代码我仍然得到重复:(
  • 请给我们一些示例数据和您的代码。如果您将集合中的每个成员(不再有重复项)与您创建的 ip_ext 列表进行一次比较,我目前看不到如何获得重复项。除非 ip_ext 本身也有重复。
  • 确保我更新了我的代码。请再试一次。请告诉我们更多关于您的数据的信息。
  • 谢谢。事实上它有效:) 第二个文件包含重复但没关系。请参阅我的问题的编辑部分。我希望你能帮助我!
【解决方案2】:

我建议你规范化所有的IP,

with open(...) as f
   # a set comprehension of _normalized_ ips, this strips excess trailing zeros
   my_ips = {'.'.join('%d'%int(n) for n in t) 
                for t in [x.split(',')[0].split('.') for x in f]}

接下来,您检查第二个文件中的每个规范化 IP 与规范化集中包含的 IP(请注意,与其他答案不同,这里有一个 单个循环,并且检查是否一个项目是一个集合的成员,x in my_xs,是一个高度优化的操作)

with open(...) as f:
    for line in f:
        ip = '.'.join('%d'%int(n) for n in line.split('.'))
        if ip in my_ips:
            ...
        else:
            ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-24
    • 1970-01-01
    • 1970-01-01
    • 2021-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多