簡體   English   中英

從多個字典輸出多行CSV文件

[英]Outputting Multi-row CSV Files from Multiple Dictionaries

嗨,我正在嘗試創建一個股票的CSV表,如下所示(為簡單起見,數字設置為相同):

 symbol    ev_ebitda    asset
 msft      40           60
 cvx       40           60
 baba      40           60

我有一個股票代碼列表(稍后會擴展):

symbol = ["msft", "cvx", "baba"]

我使用'symbol''ev_ebitda''asset'作為鍵為每個符號創建了一個字典:

i=0
while i <len(symbol): 
    vars()[symbol[i]] = {}
    vars()[symbol[i]]['symbol']=symbol[i]
    vars()[symbol[i]]['ev_ebitda'] = 40
    vars()[symbol[i]]['asset'] = 60
    i +=1

因此,例如:

cvx = {'asset': 60, 'ev_ebitda': 40, 'symbol': 'cvx'}

然后,我嘗試使用以下代碼輸出表:

header = ["symbol","ev_ebitda","asset"]
f = open('output.csv', 'wb')
w =csv.DictWriter(f, fieldnames = header)
w.writeheader()
w.writerow() #not sure what to put in here 

我不確定如何從多個字典中寫入多行。 我嘗試遵循此討論中的方法,但沒有成功。 過去8個小時,我一直在努力解決問題,非常感謝您的幫助! 這是我完整的代碼:

import csv

symbol = ["msft", "cvx", "baba"]
header = ["symbol","ev_ebitda","asset"]

#create dictionary from the symbol list
i=0
while i <len(symbol): 
    vars()[symbol[i]] = {}
    vars()[symbol[i]]['symbol']=symbol[i]
    vars()[symbol[i]]['ev_ebitda'] = 40
    vars()[symbol[i]]['asset'] = 60
    i +=1

#output csv
f = open('output.csv', 'wb')
w =csv.DictWriter(f, fieldnames = header)
w.writeheader()
w.writerow(cvx)   

在使用DictWriter ,您需要按以下方式構造每行字典:

import csv

symbol = ["msft", "cvx", "baba"]
header = ["symbol","ev_ebitda","asset"]

with open('output.csv', 'wb') as f_output:
    csv_output = csv.DictWriter(f_output, fieldnames=header)
    csv_output.writeheader()

    for s in symbol:
        row = {'asset': 60, 'ev_ebitda': 40, 'symbol': s}
        csv_output.writerow(row)

這將為您創建一個輸出CSV文件,如下所示:

symbol,ev_ebitda,asset
msft,40,60
cvx,40,60
baba,40,60

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM