Python 将列表打印到CSV
我有一份清单:Python 将列表打印到CSV,python,python-3.x,list,csv,output,Python,Python 3.x,List,Csv,Output,我有一份清单: OrderedDict([('user', 'john'), ('password', '7f5a343ca80b8127abb97d5dc5459193'), ('firstname', 'John'), ('valid', 'VALID')]) OrderedDict([('user', 'leila'), ('password', 'c769c2bd15500dd906102d9be97fdceb'), ('firstname', 'Leila'), ('valid', '
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文件的第一行,但我需要打印每个条目,而不在下方显示标题。您应该始终使用
pandas
进行数据处理。您可以从(有序的)DICT列表中创建一个数据帧,然后使用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)
您应该始终使用
pandas
进行数据操作。您可以从(有序的)DICT列表中创建一个数据帧,然后使用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)
您应该使用
csv.writer
而不是csv.writer
DictWriter
的writerow
接受dict,而writer.writerow
需要一个iterable,因此当您传递一个
dict
时,它会写入它的键而不是值
编辑:
为了使用dict
的键写入标题,您应该在写入行之前添加以下行:
wr.writeheader()
此外,还有writerows
方法,它采用dict
s的整个列表
并将其写入文件。因此,总而言之,您的代码应该如下所示:
with open("output2.csv", 'w') as outputFile:
wr = csv.DictWriter(outputFile, fieldnames=dict_list[0].keys(), dialect='excel')
wr.writeheader()
wr.writerows(dict_list)
您应该使用
csv.writer
而不是csv.writer
DictWriter
的writerow
接受dict,而writer.writerow
需要一个iterable,因此当您传递一个
dict
时,它会写入它的键而不是值
编辑:
为了使用dict
的键写入标题,您应该在写入行之前添加以下行:
wr.writeheader()
此外,还有writerows
方法,它采用dict
s的整个列表
并将其写入文件。因此,总而言之,您的代码应该如下所示:
with open("output2.csv", 'w') as outputFile:
wr = csv.DictWriter(outputFile, fieldnames=dict_list[0].keys(), dialect='excel')
wr.writeheader()
wr.writerows(dict_list)
因为
dict_list[n]
这是你订购的照片之一
然后
将迭代您的有序字典
不过,这将是一个密钥列表
您可能更想要的:
wr.writerow([dict_list[n][x] for x in dict_list[n]])
它获取字典中每个键的值。因为
dict_list[n]
这是你订购的照片之一
然后
将迭代您的有序字典
不过,这将是一个密钥列表
您可能更想要的:
wr.writerow([dict_list[n][x] for x in dict_list[n]])
它获取字典中每个键的值。可能重复的可能重复的可能重复的这与此无关吗?这正是OP想要做的。这无关紧要,因为你绝对不需要熊猫来解决这个问题。在一个巨大的库上添加依赖性,使其仅使用一个单面功能,而不需要传递dict的值而不是dict本身(或使用csv.DictWriter)就可以轻松解决问题,这违背了所有良好的实践。显然,它可以做到这一点,并且是此任务的一个很好的替代方案。到目前为止,pandas是否为OP引入了另一个主要依赖项尚不清楚,这与我们的业务无关。确切地说,
csv
作为一个软件包非常好,但对于任何类型的动态操作或分析pandas
都具有极大的优越性和灵活性。OP至少应该知道这个选项。“我真的不明白这种激烈的反应。”布鲁诺德斯图利埃没有人说这是最好的答案。你是对的,你不需要熊猫来解决问题,这是无关紧要的。这绝不是提交答案的目的,或者每个问题只允许一个答案。否决这是疯狂的,这是一个完美的解决方案。熊猫是一种非常受欢迎的动物,很多人已经有了它。如果他们没有,他们可以得到它,如果没有,看到另一个答案+1.不过,说“总是”使用熊猫有点强。这怎么不相关呢?这正是OP想要做的。这无关紧要,因为你绝对不需要熊猫来解决这个问题。在一个巨大的库上添加依赖性,使其仅使用一个单面功能,而不需要传递dict的值而不是dict本身(或使用csv.DictWriter)就可以轻松解决问题,这违背了所有良好的实践。显然,它可以做到这一点,并且是此任务的一个很好的替代方案。到目前为止,pandas是否为OP引入了另一个主要依赖项尚不清楚,这与我们的业务无关。确切地说,csv
作为一个软件包非常好,但对于任何类型的动态操作或分析pandas
都具有极大的优越性和灵活性。OP至少应该知道这个选项。“我真的不明白这种激烈的反应。”布鲁诺德斯图利埃没有人说这是最好的答案。你是对的,你不需要熊猫来解决问题,这是无关紧要的。这绝不是提交答案的目的,或者每个问题只允许一个答案。否决这是疯狂的,这是一个完美的解决方案。熊猫是一种非常受欢迎的动物,很多人已经有了它。如果他们没有,他们可以得到它,如果没有,看到另一个答案+1.不过,使用pandas时说“总是”有点强。这会引发一个错误-DictWriter需要参数fieldnames,例如:wr=csv.DictWriter(outputFile,fieldnames=['user','valid','firstname','password'],dial='excel')@michetonu,谢谢!我没有注意到fieldnames
不是可选参数。这将引发一个错误–DictWriter需要参数fieldnames,例如:wr=csv.DictWriter(outputFile,fieldnames=['user','valid','f