将列表打印到CSV

时间:2018-07-24 08:48:13

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

我有一个列表:

OrderedDict([('user', 'john'), ('password', '7f5a343ca80b8127abb97d5dc5459193'), ('firstname', 'John'), ('valid', 'VALID')])
OrderedDict([('user', 'leila'), ('password', 'c769c2bd15500dd906102d9be97fdceb'), ('firstname', 'Leila'), ('valid', 'VALID')])
OrderedDict([('user', 'chris'), ('password', '5badcaf789d3d1d09794d8f021f40f0e'), ('firstname', 'Christopher'), ('valid', 'VALID')])
OrderedDict([('user', 'phill'), ('password', '21b72c0b7adc5c7b4a50ffcb90d92dd6'), ('firstname', 'Phill'), ('valid', 'VALID')])
OrderedDict([('user', 'morton'), ('password', '5f4dcc3b5aa765d61d8327deb882cf99'), ('firstname', 'Morton'), ('valid', 'VALID')])

我想将其放入.CSV文件中-基本上该文件用于存储用户,并且我有一个程序可以为用户添加密码/哈希。

我目前有:

with open("output2.csv", 'w') as outputFile:
        wr = csv.writer(outputFile, dialect='excel')
        n = 0
        while n < len(dict_list):
            print(dict_list[n])
            wr.writerow(dict_list[n])
            n += 1
    quit()

但是.CSV文件仅显示以下内容:

user,password,firstname,valid
user,password,firstname,valid
user,password,firstname,valid
user,password,firstname,valid
user,password,firstname,valid

我确实需要将其作为CSV文件的第一行,但我需要打印每个条目而标题不位于下方。

3 个答案:

答案 0 :(得分:3)

您应该使用csv.DictWriter而不是csv.writer
DictWriter的{​​{1}}接受命令,而writerow
期望可迭代,因此当您传递writer.writerow时,它将写入其键,而不是值。

编辑:

为了用您的dict键编写标题,您应该在写行之前添加以下行:

dict

此外,还存在wr.writeheader() 方法,该方法可以获取writerows的整个列表 并将其写入文件。
因此,总结起来,您的代码应如下所示:

dict

答案 1 :(得分:0)

您应始终使用pandas进行数据处理。您可以从(排序的)字典列表创建数据框,然后使用pandas的to_csv函数将整个内容转储到文件中。

import pandas as pd
odList = [ordered_dict1, ordered_dict2, ordered_dict3, ordered_dict4, ordered_dict5]

output = pd.DataFrame(odList)

这将输出:

     user                          password    firstname  valid
0    john  7f5a343ca80b8127abb97d5dc5459193         John  VALID
1   leila  c769c2bd15500dd906102d9be97fdceb        Leila  VALID
2   chris  5badcaf789d3d1d09794d8f021f40f0e  Christopher  VALID
3   phill  21b72c0b7adc5c7b4a50ffcb90d92dd6        Phill  VALID
4  morton  5f4dcc3b5aa765d61d8327deb882cf99       Morton  VALID

要将其保存到csv文件中:

output_path = 'your_file_name.csv'
output.to_csv(output_path)

要从csv中排除索引(左侧的数字),请设置index=False

output.to_csv(output_path, index=False)

答案 2 :(得分:-1)

因为

dict_list[n]

是您的OrderedDicts之一。

然后

wr.writerow(dict_list[n])

将遍历您订购的字典。

但这将是键列表。

您可能想要的东西:

wr.writerow([dict_list[n][x] for x in dict_list[n]])

哪个值用于字典中的每个键。