如何使用Python程序跟踪csv文件中的修订?

时间:2015-12-15 00:08:00

标签: python csv

我有一个CSV文件,其中每行都有一个ID,后跟几个属性。最初,我的任务是找到具有匹配属性的ID,并将它们作为一个系列放在一起。然后,以不同行中打印的每个关系的格式将它们输出到另一个CSV文档中。

CSV文件的基本大纲如下所示:

ID     SIZE    SPEED    RANK
123     10      20       2
567     15      30       1
890     10      20       2
321     20      10       3
295     15      30       1

python模块的基本大纲如下所示:

FAMILIES = {}
ATTRIBUTES = ['ID', 'SIZE', 'SPEED', 'RANK']
with open('data.csv', 'rb') as f:
  data = csv.DictReader(f)
  for row in data:
    fam_id = str(tuple([row[field_name] for field_name in ATTRIBUTES]))
    id = row['ID']
    FAMILIES.setdefault(fam_id, [])
    FAMILIES[fam_id].append(id)

output = []
for fam_id, node_arr in FAMILIES.items():
    for from_item in node_arr:
        for to_item in node_arr:
            if from_item != to_item:
                output.append(fam_id, from_item, to_item)

def write_array_to_csv(arr):
    with open('hdd_output_temp.csv', 'wb') as w:
        writer = csv.writer(w)
        writer.writerows(arr)

if __name__ == "__main__":
    write_array_to_csv(output)

将打印成这样的CSV:

('10,20,2')    123    890
('10,20,2')    890    123
('15,30,1')    567    295
('15,30,1')    295    567

现在,我的问题是,如果我要进入原始csv文件并进行一些修订,我怎么能改变代码来检测所有更新的关系。我想将所有增加的关系放入FAMILIES2,将所有破碎的关系放入FAMILIES3。因此,如果添加了与'20,10,3'系列相匹配的新ID'589',并且'890'被更新为具有不同的ID '10,20,1', 我希望FAMILIES 2能够输出:

('20,10,3')    321    589
('20,10,3')    589    321

和FAMILIES3输出:

('10,20,2')    123    890
('10,20,2')    890    123

0 个答案:

没有答案