导出dict为csv文件时引发的AttributeError

时间:2015-02-17 09:56:08

标签: python csv

我确定我太盲目了。 在这里的一些帖子的帮助下(感谢所有),我能够一步步走下去。

我读了一个xls文件,把它移到dict中(我需要操作,即稍后删除一些列)并写出为csv。

我的代码:

wb = xlrd.open_workbook(args.inname)
sheet = wb.sheet_by_index(0)

# read header values into the list
keys = [sheet.cell(0, col_index).value for col_index in xrange(sheet.ncols)]
print "keys are", keys

mydict = []
for row_index in xrange(1, sheet.nrows):
    d = {keys[col_index]: sheet.cell(row_index, col_index).value
        for col_index in xrange(sheet.ncols)}
    mydict.append(d)

with open('mycsvfile.csv','wb') as f:
    w = csv.writer(f, quoting=csv.QUOTE_ALL)
    w.writerow(mydict.keys())
    w.writerow(mydict.values())

但是这给了我以下错误:

Traceback (most recent call last):
  File "xls2csv.py", line 80, in <module>
    main()
  File "xls2csv.py", line 53, in main
    w.writerow(mydict.keys())
AttributeError: 'list' object has no attribute 'keys'

有趣的是:“打印”键是“,键可以正确打印所有键......

1 个答案:

答案 0 :(得分:1)

mydict是一个列表: 将行mydict = []更改为mydict = {}。 然后崩溃因为在dict结构中不存在追加方法。要在dict中附加值,您可以使用mydict = {1:2}mydict[1] = 2。 提高你的dict技能的最好方法是打开python控制台并尝试所有方法。 也可以将列表放入dict值:

>>> mydict = {}
>>> mydict['namelist'] = [1,2,3]
>>> mydict['namelist'].append(4)
>>> mydict
{'namelist': [1, 2, 3, 4]}