我有一个列表:
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文件的第一行,但我需要打印每个条目而标题不位于下方。
答案 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]])
哪个值用于字典中的每个键。