【问题标题】:Python removing duplicate lines [duplicate]Python删除重复行[重复]
【发布时间】:2015-11-25 20:52:26
【问题描述】:

我编写了以下代码来从文件中获取所有 IP 地址并打印它们:

with open("C:\\users\\joey\\desktop\\access.log",'r') as bestand:
    for line in bestand:
        try:
            splittedline = line.split('sftp-session')[1].split("[")[1].split("]")[0]
        except Exception:
            continue
        print splittedline

以下代码打印另一个文件的所有 IP 地址:

with open("C:\\users\\joey\\desktop\\exit_nodes.csv",'r') as bestand:
    for line in bestand:
        print line

如何比较这 2 个文件并仅显示唯一的 IP 地址并删除重复项?

输出atm如下:

217.172.190.19
217.210.165.43
218.250.241.229
223.18.115.229
223.133.243.101

【问题讨论】:

  • 在python中,要删除重复项,您通常会转换为set()

标签: python duplicates


【解决方案1】:

如果顺序不重要,使用集合:

ips_1 = set()

with open("C:\\users\\joey\\desktop\\access.log",'r') as bestand:
    for line in bestand:
        try:
            ips1.add(linprint splittedlinee.split('sftp-session')[1].split("[")[1].split("]")[0])
        except Exception:
            continue

ips_2 = set()
with open("C:\\users\\joey\\desktop\\exit_nodes.csv",'r') as bestand:
    for line in bestand:
        ips_2.add(line)

然后您可以使用 set 方法查看两个文件中的哪些 ip,哪些仅在一个文件上或获取所有唯一 ip:

两个文件中都有哪些 ip?

ips_1.intersection(ips_2)

哪些 ips 只在文件 1 中?

ips_1.difference(ips_2)

所有唯一的 ip:

ips_1.union(ips_2)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-14
    • 2015-11-16
    • 1970-01-01
    • 2018-04-07
    • 1970-01-01
    • 2019-04-15
    • 2015-01-19
    • 1970-01-01
    相关资源
    最近更新 更多