如何使用Python从查找文件中删除重复项?

时间:2015-04-29 14:51:11

标签: python duplicates

我已经看到围绕这类问题的多个回复,但我不相信我已经看到任何关于我关注的列表类型。希望我不会在这里重复任何事情。非常感谢您的帮助!

我有一个逗号分隔文件,用于数据丰富。它从标题 - TPCode,corporation_name开始 - 然后是值列表。有大约35,000行(如果重要的话)。

我注意到,当显示来自该查找文件(CSV)的数据时,同一客户有多个条目。我想运行Python脚本来删除重复项

,而不是进入并手动删除它们

格式为:

  • 值,值
  • 值,值
  • 值,值

    等,使用Python删除重复项的最佳方法是什么?作为旁注,每个TPCode应该是不同的,但是公司名称可以有多个TPCode。

如果您需要任何其他信息,请与我们联系。

提前致谢!

2 个答案:

答案 0 :(得分:0)

很难从你的问题中判断每一行是否应该是唯一的。如果是这样,你可以这样做:

for l in sorted(set(line for line in open('ors_1202.log'))):
    print(l.rstrip())

否则我们需要更多信息。

答案 1 :(得分:0)

由于csv行是元组而元组是不可变对象,因此您可以遍历rwos并使用set容器来保存行:

import csv
seen=set()
with open('in_file.csv', 'rb') as csvfile,pen('out_file.csv', 'wb') as csvout:
     spamreader = csv.reader(csvfile, delimiter=',')
     spamwriter = csv.writer(csvout, delimiter=',')
     for row in spamreader:
           seen.add(row)
           if row not in seen :
               pamwriter.writerow(row)

请注意,set中的成员船检查具有O(1)复杂性。