_csv.Error问题:预期序列

时间:2018-09-06 15:10:27

标签: python python-3.x csv dictionary

我有一份python字典的清单,我试图将这些值写入csv文件,但是由于某些原因,我不断收到 _csv.Error:需要序列

这是示例代码:

import csv
import os, sys

headers = ['id', 'Info']
data = [{'id': 1, 'Info': 'Example 1'}, {'id': 2, 'Info':'Example 2'}]

with open('all_csv.csv', 'wt') as f:
   writer = csv.writer(f, delimiter=',')
   writer.writerow(headers)
   for each in data:
      writer.writerow(each.values())

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

在python 3中,values()不再返回list。您必须先将其转换:

writer.writerow(list(each.values()))

请注意,字典没有排序,因此未定义列的顺序(除非您使用的是Python 3.6或更高版本),所以也许您想使用csv.DictWriter对象来避免这种情况您的标题与您的行不匹配。

这是我使用csv.DictWriter的方法:

import csv

data = [{'id': 1, 'Info': 'Example 1'}, {'id': 2, 'Info':'Example 2'}]

with open('all_csv.csv', 'w', newline="") as f:
   writer = csv.DictWriter(f, fieldnames = data[0], delimiter=',')
   writer.writeheader()
   writer.writerows(data)

输出为:

Info,id
Example 1,1
Example 2,2