python-3.x - 使用打印格式不适用于 csv 中的 DictWriter - python
问题描述
下面的例子似乎不起作用
import csv
values = [{'emp_name': 'John Wick',
'dept': 'Accounting', 'val': '10'},
{'emp_name': 'Neo Anderson',
'dept': 'IT', 'val': '20'}]
with open('file1.csv', mode='w') as csv_file:
fieldnames = ['name', 'department']
writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
for value in values:
writer.writerow({"'name': '{emp_name}', 'department': '{dept}'".format(
**value)
})
错误:
Traceback (most recent call last):
File "csv_test.py", line 13, in <module>
**value)
File "python-3.7.5/lib/python3.7/csv.py", line 155, in writerow
return self.writer.writerow(self._dict_to_list(rowdict))
File "python-3.7.5/lib/python3.7/csv.py", line 148, in _dict_to_list
wrong_fields = rowdict.keys() - self.fieldnames
AttributeError: 'set' object has no attribute 'keys'
预期输出:
name, department
John Wick, Accounting
Neo Anderson, IT
有没有好的解决方法?
解决方案
使用dict
时通过writerow
前任:
import csv
values = [{'emp_name': 'John Wick',
'dept': 'Accounting'},
{'emp_name': 'Neo Anderson',
'dept': 'IT'}]
with open('file1.csv', mode='w') as csv_file:
fieldnames = ['emp_name', 'dept']
writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
for value in values:
writer.writerow({"emp_name": value['emp_name'], "dept": value['dept']}) #Pass the dict
推荐阅读
- monetdb - MonetDB 上的集群配置:无法发现其他节点
- azure-maps - 如何显示天蓝色地图路线方向
- verilog - SystemVerilog Generate 支持延迟吗?
- ios - 通过一个简单的例子解释我在 Swift 中的委托
- sql - 在 WHERE NOT EXISTS 之后加入
- java - 如何从 ListView 中删除一个项目并在 Firebase 上删除它?
- html - 为什么“字体粗细”适用于“选择”元素的选定“选项”,而“颜色”不适用?
- python - 使用其中一个 DataFrame 的列名合并两个 DataFrame
- r - 填补空白,具体取决于缺失值的长度以及 R 中最后一个和上一个已知值
- python - 如何在python中平滑后反卷积