按字母顺序排列的CSV元素,同时保持第一个元素在python中不变

时间:2016-08-28 01:16:31

标签: python python-3.x sorting csv itertools

如何将带有不同长度行(实际上最多12行)的CSV文件作为输入,然后输出新的CSV文件,其中新行包含 每行的第0个元素+每个唯一的元素对(> 0)按字母顺序排列?

原始行元素不按字母顺序排列。

请参阅图像,例如输入和输出。 enter image description here

1 个答案:

答案 0 :(得分:1)

您可以使用csv进行阅读和阅读写作和itertools.combinations用于生成对:

import csv
from itertools import combinations

with open('input.csv') as in_f, open('output.csv', 'w') as out_f:
    reader = csv.reader(in_f)
    writer = csv.writer(out_f)

    for row in reader:
        for combination in combinations(sorted(row[1:]), 2):
            writer.writerow(tuple(row[:1]) + combination)

输出:

0,A,B
1,A,B
1,A,C
1,B,C
2,A,B
2,A,C
2,A,D
2,B,C
2,B,D
2,C,D