将Python的列表或字典写入CSV文件(包含多个列的行)

时间:2017-09-22 15:44:02

标签: python csv dictionary

我刚刚开始使用Python !!

我想创建一个CSV文件,其中我有一个字典,我想在同一行的自己的列中打印它的每个成员。

就像我有一个字典数组,我希望每一行代表其中一行,每行代表一个项目。

import csv


"... we are going to create an array of dictionaries and print them all..."

st_dic = []

true = 1

while true:
    dummy = input("Please Enter name, email, mobile, university, major")
    x = dummy.split(",")

    if "Stop" in x:
        break

    dict ={"Name":x[0],"Email":x[1],"Mobile":x[2],"University":x[3],"Major":x[4]}
    st_dic.append(dict)

f2 = open("data.csv" , "w")

with open("data.csv", "r+") as f:
    writer = csv.writer(f)
    for item in st_dic:
        writer.writerow([item["Name"], item["Email"], item["Mobile"] , item["University"] , item["Major"]])
    f.close()

我现在输出的东西是一行,其中包含第一个字典中的数据,我只是希望它们分开,每个都在其行内的自己的列中。

1 个答案:

答案 0 :(得分:0)

令人惊讶的是,这里有很多问题试图在while循环和input()命令中填写一些数据。在所有的公平性中,这不是python最佳用例。

想象一下,你的代码填写了字典:

dict1 = {'name': "Kain", 'email': 'make_it_up@something.com'} 
dict2 = {'name': "Abel", 'email': 'make_it_up2@otherthing.com'}
dict_list = [dict1, dict2]

之后,您可以轻松导出到csv:

import csv 
with open('data.csv', 'w') as f: 
    w = csv.DictWriter(f, ['name', 'email'], lineterminator='\n')
    w.writeheader()
    for row in dict_list:  
        w.writerow(row)

请注意,关于SO的csv模块存在许多问题 以及examples in documentation