因此,我希望 Python 使用 csv 读取器/写入器获取目录中的所有 CSV 并将它们组合起来,同时过滤掉第二列中包含与任何其他行的值重复的任何行。
这是我不起作用的脚本:
import csv
import glob
with open('merged.csv','a') as out:
seen = set()
output = []
out_writer = csv.writer(out)
csv_files = [f for f in glob.glob('*.csv') if 'merged' not in f]
#csv_files = glob.glob('*.csv')
# I'd like to use all files including the output so that I don't
# have to rename it when reusing the script - it should dupe-filter itself!
for filename in csv_files:
with open(filename, 'rb') as ifile:
read = csv.reader(ifile, delimiter=',')
for row in read:
if row[1] not in seen:
seen.add(row[1])
if row: #was getting extra rows
output.append(row)
out_writer.writerows(output)
我觉得我一定错过了一些简单的东西。我的文件每个大小约为 100MB,我最终希望将其自动化,以便不同的计算机可以共享一个合并文件以进行重复检查。
为了获得额外的信用,我将如何更改它以检查具有两者row[1]
和row[2]
共同点的行?(一旦欺骗过滤器和自我包含工作,当然......)