2017-06-01 15 views
0

辞書のリストはnです。典型的な内容は以下のとおりです。私は、「説明」と「エラー」の形2列、行はリストの各要素であるCSVファイル、にこれを書くためにしようとしている辞書のリストを複数の列(および行)に書き込む

[{"description":"Lorem, ipsum, dolor, sit amet","error":"text_too_long"},{'description':'Sed ut perspiciatis, unde omnis','error':'text_too_long'},...] 

私が試してみた:

import csv, ast 
list_ = list_of_dictionaries #as a string 
with open('data.csv','wb') as f: 
    wtr = csv.writer(f) 
    for string in list_: 
     dictionary = ast.literal_eval(string) #converting to dictionary 
     to_write = [dictionary["description"],dictionary["error"]] 
     wtr.writerow([to_write]) 

これは単に1つの列に私の全体の辞書を提供します(ただし、行は大丈夫です)。私は間違って何をしていますか?

+0

あなたはhttps://docs.python.org/2/library/csv.html#csv.DictWriter dictwriterクラスを見たことがありますか? –

答えて

1

を、あなたはast機能を必要としません。

for dictionary in list_: 
    to_write = [dictionary["description"],dictionary["error"]] 
    wtr.writerow(to_write) # Not [to_write] 

は2列に辞書を書きます。

1

pandasを使用できませんか?

data = [{"description":"Lorem, ipsum, dolor, sit amet","error":"text_too_long"},{'description':'Sed ut perspiciatis, unde omnis','error':'text_too_long'}] 

import pandas as pd 

df = pd.DataFrame(data) 

あなたはこの取得:

df 
Out[246]: 
         description   error 
0 Lorem, ipsum, dolor, sit amet text_too_long 
1 Sed ut perspiciatis, unde omnis text_too_long 

そしてto_csvを使用:辞書が直接設定することができます

df.to_csv('data.csv', index=False) 
関連する問題