删除python 2.7中CSV文件中的重复记录

时间:2014-09-23 14:12:16

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

我的INPUT文件:

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

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您可以将文件循环两次。

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

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

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