在python中将列表写入csv

时间:2018-06-12 15:43:51

标签: python arrays python-3.x list csv

我有这个值列表:

list_a的输出:

list_a: [[[2.0, 4.0], [1.0, 2.0]], [[2.0, 4.0], [2.0, 3.0], [3.0, 1.0]], [[3.0, 6.0], [5.0, 5.0], [6.0, 4.0]], [[3.0, 6.0], [4.0, 7.0]], [[2.0, 4.0], [3.0, 6.0]]]

我想以特定格式将其导出到csv文件,以便每组值都按以下格式占用一个单元格:

 (2.0; 4.0) | (1.0; 2.0)
 (2.0; 4.0) | (2.0; 3.0) | (3.0; 1.0)
 ...

“|”表示同一行上的单元格分隔(不包括在csv文件中),单元格中值的格式应为圆括号和分号(X1; X2)

我尝试了以下但是我得到括号和冒号:

with open('outputdata.csv', 'w') as outfile:
    mywriter = csv.writer(outfile)

    for d in result:
        mywriter.writerow(d)

感谢任何帮助!

3 个答案:

答案 0 :(得分:0)

在没有编写器的情况下生成输出文件可能更容易:

SEP = ',' # Use any other separator here, if you want
with open('outputdata.csv', 'w') as outfile:
   for line in list_a:
      outfile.write(SEP.join(['({}; {})'.format(*pair) for pair in line]))
      outfile.write("\n")

答案 1 :(得分:0)

您可以尝试自己编写csv,而不需要任何编写器类:

with open('outputdata.csv', 'w') as f:
    for vector in list_a:
        len_ = len(vector)
        for i, point in enumerate(vector):
            f.write("({}; {})".format(*point))
            # avoid writing the last pipe
            if i != len_ - 1:
                f.write(" | ")
        f.write("\n")

内容:

(2.0; 4.0) | (1.0; 2.0)
(2.0; 4.0) | (2.0; 3.0) | (3.0; 1.0)
(3.0; 6.0) | (5.0; 5.0) | (6.0; 4.0)
(3.0; 6.0) | (4.0; 7.0)
(2.0; 4.0) | (3.0; 6.0)

答案 2 :(得分:0)

试试这个:

with open('outputdata.csv', 'w') as outfile:
    mywriter = csv.writer(outfile)
    for d in result:
        row = ' | '.join(['(%f; %f)' % (t[0], t[1]) for t in d])
        mywriter.writerow(d)

每行的每个元素都是两个浮点数的数组,对吗?因此,我们使用格式字符串将[2.0, 4.0]转换为"(2.0; 4.0)"。我们为行中的每个元组执行此操作。然后,我们只使用python的join()函数将字符|放在它们之间,并将它们全部链接到一个字符串中,我们可以将其写入文件。