2010/10/16 Simone Gabbriellini <simone.gabbriell...@gmail.com>: > è corretto, però nel mio caso la lista dei nomi nei due csv non ha lo stesso > ordine. potrei ordinarle però prima di iniziare il merge? >
No, ordinarli prende tempo, e probabilmente il doppio della memoria, se non sono tantissime righe (x colonne) conviene salvare un csv (quello con meno colonne) tutto in memoria e poi iterare sul secondo e scrivere al volo sul csv def csv_merge(csvr_a, csvr_b, csvw_out): a_dict = {} a_fieldnames = None for row_a in csvr_a: if a_fieldnames == None: a_fieldnames = row_a else: a_dict[row_a[0]] = row_a b_fieldnames = None for row_b in csvr_b: if b_fieldnames == None: b_fieldnames = row_b csvw_out.writerow(a_fieldnames + b_fieldnames[1:]) else: csvw_out.writerow(a_dict[row_b[0]] + row_b[1:]) csv_out = csv.writer(open('out.txt', "w+")) csv_merge(coordReader, nodesReader, csv_out) se dai come primo parametro il csv con meno colonne è meglio. -- Andrea _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python