gpt4 book ai didi

Python 删除重复项。

转载 作者:太空宇宙 更新时间:2023-11-03 15:06:56 25 4
gpt4 key购买 nike

我正在尝试让我的代码删除 .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“行”数据

Date,Price DKK,URL,Description
19/5,1 kr.,http://www.dba.dk/8660-vegavej-1-14/id-102010171/,"8660, Vegavej 1-14, hel�rsgrund, Boligprojekt s�lges 1-14 boliger
R�kkehusene ligger ud til et stort smukt fredet omr�de. Alle boliger har private sydvendte haver, som ligger direkte ud til et f�lles omr�de. Der er altan, hvorfra der er udsigt over det facinerende og karakteristiske landskab med �l�b, heste, gravh�j.
Aktiv fritid og lokalmilj�.
Tebstrup er en lille landsby med 660 indbyggere. I byen er der skole, b�rnehave m.m
se"
19/5,1.599.000 kr.,http://www.dba.dk/7800-4-103-372-2013/id-93506363/,"7800 4, 103, 372, 2013, Fyrt�jet 8, 7656, 6130, 80000, Villa"

但是,如果使用 csv(和 Excel)读取它,换行符会被引号括起来,因此该行上只有一个单元格。

with open("output.csv") as f : 
for row in csv.reader(f):
print( row )

['Date', 'Price DKK', 'URL', 'Description']
['19/5', '1 kr.', 'http://www.dba.dk/8660-vegavej-1-14/id-102010171/', '8660, Vegavej 1-14, hel\xef\xbf\xbdrsgrund, Boligprojekt s\xef\xbf\xbdlges 1-14 boliger\r\nR\xef\xbf\xbdkkehusene ligger ud til et stort smukt fredet omr\xef\xbf\xbdde. Alle boliger har private sydvendte haver, som ligger direkte ud til et f\xef\xbf\xbdlles omr\xef\xbf\xbdde. Der er altan, hvorfra der er udsigt over det facinerende og karakteristiske landskab med \xef\xbf\xbdl\xef\xbf\xbdb, heste, gravh\xef\xbf\xbdj.\r\nAktiv fritid og lokalmilj\xef\xbf\xbd.\r\nTebstrup er en lille landsby med 660 indbyggere. I byen er der skole, b\xef\xbf\xbdrnehave m.m\r\nse']
['19/5', '1.599.000 kr.', 'http://www.dba.dk/7800-4-103-372-2013/id-93506363/', '7800 4, 103, 372, 2013, Fyrt\xef\xbf\xbdjet 8, 7656, 6130, 80000, Villa']

文件的行数可能不等于 csv 数据中的行数。

编辑

添加到您的测试文件以确认您可能看到的内容。

null,first,second,third
zero,one,two,"three
,four
five\r\n"
null,first,second,third
nul,un,deux,trois
0,"1,one",2,3

关于Python 删除重复项。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44575562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com