代码之家  ›  专栏  ›  技术社区  ›  Andres Urrego Angel

Python3从列表(每行都有dict)到csv

  •  0
  • Andres Urrego Angel  · 技术社区  · 7 年前

    [{“field1”:“field”,“field2”:“field”…},{“field1”:“field”,“field2”:“field”…}]

    我已经完成了下面的代码片段,但只存储了标题:

    with open('myfile', mode='wt', encoding='utf-8') as myfile:
        for lines in data:
            myfile.write('\n'.join(lines))
            myfile.write('\n')
    

    我在探索 How do I write a Python dictionary to a csv file? 但是我不知道如何在一个循环中把它组成我列表的每一行,以保证每一条记录都来自行列表。

    谢谢你的帮助

    谢谢。

    3 回复  |  直到 7 年前
        1
  •  0
  •   Joe Patten    7 年前

    你可以用熊猫很好地解决这个问题:

    import pandas as pd
    df = pd.DataFrame(dict_list)
    df.to_csv('output.csv', index=False)
    

    dict_list = [{'field1': 100, 'field2': '10:00', 'field3': 'cherries'}, 
    {'field1': 500, 'field2': '6:00', 'field3': "cheese"}, 
    {'field1':250, 'field2': '9:00', 'field3': 'beans'}]
    

       field1 field2    field3
          100  10:00  cherries
          500   6:00    cheese
          250   9:00     beans
    
        2
  •  1
  •   tlm    7 年前
    with open('myfile', 'wb') as f:
        # assign your headers
        w = csv.DictWriter(f, fieldnames=data[0].keys())
        # write headers
        w.writeheader()
        # write data
        w.writerows(data)
    

    你可以用 DictWriter.writerows 迭代 list

    docs 怎样 DictWriter

    这是我们的规格 writerows

    csvwriter.writerows(行)

    在行中写入所有元素(如前所述的行对象的iterable)

        3
  •  0
  •   Paulo Scardine    7 年前

    这几乎是另一个问题的重复,但是注释系统不适合这么大的代码片段。只需使用for循环在dict列表上迭代,其中另一个问题的答案只保留一行:

    with open('myfile', mode='wt', encoding='utf-8') as myfile:
        writer = csv.DictWriter(myfile, data[0].keys())
        writer.writeheader()
        for line in data:
            writer.writerow(line)
    

    writerows 方法并传递整个列表:

    with open('myfile', mode='wt', encoding='utf-8') as myfile:
        writer = csv.DictWriter(myfile, data[0].keys())
        writer.writeheader()
        writer.writerows(data)