python - writer.writeheader() - 无法识别传入标题的字典字段
问题描述
我正在使用以下代码编写传递给函数的字典到使用 python 的 csv 文件
def addToLog(self,content):
filename = "myfile.csv"
fileds = content.keys()
print "Inside Add to Log"
print fileds
with open(filename,'w') as csvfile:
writer = csv.DictWriter(csvfile,fieldnames=fileds)
writer.writeheader()
writer.writerows(content)
在这里,我尝试使用字典函数动态获取字段列表,但是当我尝试执行上述文件时,出现以下错误。
ValueError: dict contains fields not in fieldnames: 'n', 'a', 'm', 'e'
但是,如上述功能中所述打印时的键如下:
['name', 'dob', 'gender', 'phone', 'email']
无法发现问题。
解决方案
您正在尝试将单个字典写入文件。为此,请使用DictWriter.writerow
而不是DictWriter.writerows
.
这里发生的情况是writerows
(注意复数“s”)将尝试遍历content
以写入每个元素,因为它假设您传入的是字典的可迭代内容。但是,如果您遍历单个字典,您将获得它的键,每个键都不是包含您在创建 DictWriter 时提到的字段名称的字典。
推荐阅读
- c - IPV4 客户端到 IPV6 服务器连接问题
- oauth-2.0 - 如何在经典 asp 中获取 oauth AccessToken
- javascript - 每次将新 div 附加到 div 时,如何获得声音/警报?
- angular - 如何将嵌套的 Mat-Table Grid 应用于 Angular 的第三级?
- java - 双精度不能转换为计算器不兼容的类型
- c# - 超过 SignalR 的 MaximumReceiveMessageSize 属性的消息大小会导致活动会话断开连接
- cmake - 配置 cmake 以使用自制库而不是系统提供的库
- python - 在 python 中的多标签问题中使用准确度分数的问题
- class - 自写类的操作重载 __add__ 发生了奇怪的内存访问问题
- android - Android TextView 文本选择弹出菜单多行?