Python 从csv中删除重复项

Python 从csv中删除重复项,python,csv,Python,Csv,好的,我有一个csv文件,我想删除重复项。我有一个工作代码示例,但我后来也尝试复制它,副本显示为空白,我相信,因为我用于删除重复项的代码并没有关闭csv文件,然后进行复制。如果我在删除重复项之前复制文件,它将非常有效。但我希望避免删除两个文件上的重复项 删除重复项的工作代码: rows = csv.reader(open('scan.csv', 'r', newline='')) newrows = [] for row in rows: if row not in newrows:

好的,我有一个csv文件,我想删除重复项。我有一个工作代码示例,但我后来也尝试复制它,副本显示为空白,我相信,因为我用于删除重复项的代码并没有关闭csv文件,然后进行复制。如果我在删除重复项之前复制文件,它将非常有效。但我希望避免删除两个文件上的重复项

删除重复项的工作代码:

rows = csv.reader(open('scan.csv', 'r', newline=''))
newrows = []
for row in rows:
    if row not in newrows:
        newrows.append(row)
writer = csv.writer(open('scan.csv', 'w', newline=''))
writer.writerows(newrows)
我相信python3的答案是使用with语句,而不是执行上述代码。但是我完全不知道如何将代码转换成with语句。以下是我正在尝试的(这可能是完全错误的)

如果我在整个基本问题上都错了,我这样做是为了复制

shutil.copyfile('scan.csv', 'iplist.csv')
在我的工作代码之前运行这个,效果很好。在工作代码之后运行此命令,将生成一个空csv文件

我还试图在不导入任何必须安装在像panda这样的windows上的东西的情况下构建整个系统

问题:使用With语句从csv中删除重复项

使用嵌套的
和…


参考:内置函数

  • 上下文管理器的典型用途包括关闭打开的文件

  • 集合对象是不同的散列对象的无序集合

  • 返回对象的哈希值


问题:使用With语句从csv中删除重复项

使用嵌套的
和…


参考:内置函数

  • 上下文管理器的典型用途包括关闭打开的文件

  • 集合对象是不同的散列对象的无序集合

  • 返回对象的哈希值


或者@cricket_007:OP声明:没有熊猫。或者@cricket_007:OP声明:没有熊猫。
shutil.copyfile('scan.csv', 'iplist.csv')
_set = set()

with open('scan.csv', 'r', newline='') as in_file, \
     open('iplist.csv', 'w', newline='') as out_file:

    for line in in_file:
        _hash = hash(line)
        if _hash not in _set:
            out_file.write(line)
            _set.add(_hash)