2015-12-21 90 views
0

对于CSV代码阅读器使用此example,如何输出特定列和/或不同顺序到CSV?从字典中,如何将特定列输出为CSV

import csv 
headers = ['Symbol', 'Price', 'Date', 'Time', 'Change', 'Volume'] 
rows = [{'Symbol':'AA', 'Price':39.48, 'Date':'6/11/2007', 
      'Time':'9:36am', 'Change':-0.18, 'Volume':181800}, 
     {'Symbol':'AIG', 'Price': 71.38, 'Date':'6/11/2007', 
      'Time':'9:36am', 'Change':-0.15, 'Volume': 195500}, 
     {'Symbol':'AXP', 'Price': 62.58, 'Date':'6/11/2007', 
      'Time':'9:36am', 'Change':-0.46, 'Volume': 935000}, 
     ] 

with open('stocks.csv','w') as f: 
    f_csv = csv.DictWriter(f, headers) 
    f_csv.writeheader() 
    f_csv.writerows(rows) 

我怎样才能输出音量,然后日期(列重新排序,2列没有输出)?

回答

2

使用extrasaction参数为DictWriter constructor

with open('stocks.csv','w') as f: 
    f_csv = csv.DictWriter(f, ['Volume','Date'], extrasaction='ignore') 
    f_csv.writeheader() 
    f_csv.writerows(rows) 

结果:

Volume,Date 
181800,6/11/2007 
195500,6/11/2007 
935000,6/11/2007 
+0

哇,我已经使用了'DictWriter',并且从未知道过t他 - 我通常只是在我将它传递给“编辑者”之前做一个词典理解的生成器。做得好! – wpercy

-1

我不是超级熟悉dictwriter但你可以建立一个字典列表,与您希望的领域

myfields = ['Volume', 'Date'] 
myrows = [] 
for row in rows: 
    myrow = {} 
    for field in myfields: 
     myrow[field] = row.get(field) 
    myrows.append(myrow) 
f_csv = csv.DictWriter(f, myfields) 
f_csv.writeheader() 
f_csv.writerows(myrows) 
+0

Rob的答案更清晰,更好地利用了dictwriter的内置功能。我的回答太慢了! – superbeck

相关问题