" ValueError异常"将行写入CSV文件时

时间:2016-03-10 09:19:58

标签: python dictionary

writer = csv.DictWriter(result, fieldnames=Fnames)
for val in Fnames:
     for row in List:
          if str(row[1]) == str(val):
              dic = {str(val): row[2]}
              print dic.items()
              writer.writerows(dic)

我得到了:

Error: ValueError: dict contains fields not in fieldnames: S, c, h, o, o, l

我正在将字典值写入CSV文件,但是我收到以下错误。我尝试了不同的方法但没有成功。要将行写入CSV,我需要做什么?

3 个答案:

答案 0 :(得分:1)

Fnames需要使用list个字段名称。看起来你已将它传递给string“学校”,它会逐个遍历每个字母。

检查here以获取一些文档/示例。

答案 1 :(得分:1)

错误消息指出您的词典包含的fieldnames参数中没有相应条目的键。假设这些只是额外的字段,您可以使用extrasaction parameter during construction of your DictWriter对象忽略它们:

答案 2 :(得分:0)

您获得的具体错误是因为您以单个字典作为参数调用writer.writerowswriterows期望得到一个可迭代的词典,而不仅仅是一个,所以它误解了一些东西。它遍历字典(获取密钥)但期望得到内部的序列。当它迭代那些(为了确保字典具有预期的键)时,它会看到字典键的字母。

我不确定你的逻辑应该是什么。可能你不应该在顶层迭代Fnames,因为你写的每个字典都需要包含其中的每个字段(除非你为extrasaction参数指定一个非默认值DictWriter)。也许首先在List项上循环,然后在Fname字段之后循环,每次都向字典添加新的键和值?