我正在尝试让我的代码删除一个.csv文件中的重复项。可以找到http://www.sharecsv.com/s/29ae855f20472de54b12fa66bbe3cbb9/DBA.csv
我得到了一个关于该怎么做的建议,最后得到了如下代码:
def deleteDuplicate():
seen = set()
dupeCount = 0
counter = 0
with FileInput('DBA.csv', inplace=1) as f:
f, f_orig = tee(f)
for row, line in zip(csv.reader(f), f_orig):
if row[2] in seen:
dupeCount+=1
continue
seen.add(row[2])
counter+=1
print(line, end='')
print(counter)
print("Removed {} Duplicates".format(dupeCount))
以上代码非常适合在较小的测试规模上删除重复项,如:
null,first,second,third
zero,one,two,three
null,first,second,third
nul,un,deux,trois
0,"1,one",2,3
当我在更大的.csv文件上运行它时,它会很好地删除重复项,但最后会额外删除4行。删除的4行不会在我的dupeCount中被跟踪,因此它们不应该触发我的if语句。你知道吗
我必须承认,我不太清楚itertools中tee()的用法是用来做什么的,以及为什么它是有益的。你知道吗
我的两个问题是: 为什么deleteDuplicate()在较大的.csv文件中删除4行,为什么使用tee()和zip?你知道吗
请看数据的第一行,描述中有换行符'\n'(以及逗号),因此我们有7行数据
但如果用csv(和excel)读取,换行符会被引号括起来,因此该行只有一个单元格。你知道吗
文件行可能不等于csv数据中的行。你知道吗
编辑
添加到测试文件以确认您可能看到的内容。你知道吗
相关问题 更多 >
编程相关推荐