0

我的输入文件:

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

我究竟做错了什么?

4

1 回答 1

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

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

于 2014-09-23T14:34:40.990 回答