【发布时间】:2013-10-22 06:07:35
【问题描述】:
我正在尝试编写一个 python (2.7) 脚本来将多个 CSV 列表添加在一起(简单追加),但不添加文件 X 中与文件 Y 共享一个元素(第一列除外)的任何行。这里是我的试用脚本:
import csv
import glob
with open('merged.csv','wb') as out:
seen = set()
output = []
out_writer = csv.writer(out)
csv_files = glob.glob('*.csv')
for filename in csv_files:
with open(filename, 'rb') as ifile:
read = csv.reader(ifile)
for row in read:
if {row[1] not in seen} & {row[2] not in seen} & {row[3] not in seen}:
seen.add(row[1])
seen.add(row[2])
seen.add(row[3])
output.append(row)
out_writer.writerows(output)
我确信这可以清理一些,但这是试运行 - 为什么它不能正确地将第 2、3 和 4 列中的元素添加到看到的集合中,然后如果它们出现在行中则不附加行考虑的行?除了正确检查重复之外,它还成功输出了合并文件。 (如果合并的文件已经存在于目录中,这是否也有效,或者我会遇到麻烦?)
提前非常感谢! :)
【问题讨论】: