【问题标题】:Delete Duplicate records in CSV file in python 2.7在python 2.7中删除CSV文件中的重复记录
【发布时间】:2014-09-23 14:12:16
【问题描述】:

我的输入文件:

1,boss,30
2,go,35
2,nan,45
3,fog,33
4,kd,55
4,gh,56

输出文件应该是:

1,boss,30
3,fog,33

意味着我的输出文件应该没有重复。我应该删除基于第1列重复的记录。

我试过的代码:

source_rd = csv.writer(open("Non_duplicate_source.csv", "wb"),delimiter=d)
gok = set()
for rowdups in sort_src:
    if rowdups[0] not in gok:
        source_rd.writerow(rowdups)
        gok.add( rowdups[0])

我得到的输出:

1,boss,30
2,go,35
3,fog,33
4,kd,55

我做错了什么?

【问题讨论】:

  • 对于初学者来说,看看How do I format my posts using Markdown or HTML?;这次我会为你编辑它,让你看看它是如何工作的。
  • 什么是sort_src?另外,您能否澄清一下为什么您没有预料到该输出?已按要求删除了重复项。

标签: python-2.7 csv python-3.x cmp


【解决方案1】:

您可以将文件循环两次。

第一次,计算所有重复项。第二次通过获取感兴趣的内容。

import csv

gok={}
with open(fn) as fin:
    reader=csv.reader(fin)
    for e in reader:
        gok[e[0]]=gok.setdefault(e[0], 0)+1

with open(fn) as fin:
    reader=csv.reader(fin)
    for e in reader:
        if gok[e[0]]==1:
            print e

打印:

['1', 'boss', '30']
['3', 'fog', '33']

您的方法不起作用的原因是,一旦看到副本的第二个实例,第一个实例已经被写入。

【讨论】:

    猜你喜欢
    • 2019-03-09
    • 2015-01-03
    • 2020-07-11
    • 2012-01-06
    • 2017-03-12
    • 1970-01-01
    • 2020-06-28
    • 2022-02-16
    • 1970-01-01
    相关资源
    最近更新 更多