代码之家  ›  专栏  ›  技术社区  ›  user567879

将Python列表逐行写入csv文件

  •  0
  • user567879  · 技术社区  · 4 年前

    我有一份这样的清单

    [[1.75], [4.75]]
    [[2.5], [2.5]]
    [[3.5], [3.5]]
    [[4.0], [4.0]]
    

    我想把这个写进一个csv文件,比如

    1.75, 4.75
    2.5, 2.5
    3.5, 3.5
    4.0, 4.0
    

    当我尝试使用 writerows 方法 csv 保存为的模块

    1.75
    4.75
    2.5
    2.5
    3.5
    3.5
    4.0
    4.0
    
    0 回复  |  直到 4 年前
        1
  •  1
  •   alani    4 年前

    你需要将每一行拆分为一个平面列表。

    import csv
    
    my_list = [
        [[1.75], [4.75]],
        [[2.5], [2.5]],
        [[3.5], [3.5]],
        [[4.0], [4.0]],
        ]
    
    with open("my.csv", "w") as f:
        writer = csv.writer(f)
    
        for row in my_list:
            writer.writerow([l[0] for l in row])
    

    或者,如果愿意 for 循环可以用生成器表达式替换,以便您可以使用 writerows 正如您目前所做的那样:

        writer.writerows([l[0] for l in row] for row in my_list)
    
        2
  •  0
  •   Riccardo Bucco    4 年前

    以下是一个可能的解决方案:

    import csv
    
    lst = [[[1.75], [4.75]],
           [[2.5], [2.5]],
           [[3.5], [3.5]],
           [[4.0], [4.0]]]
    
    with open('file.csv', 'w') as f:
        writer = csv.writer(f)
        w.writerows([[x[0] for x in lst] for line in lst])
    

    或者,您可以使用 itertools.chain :

    from itertools import chain
    ...
    w.writerows([list(chain(*line)) for line in lst])