2017-08-15 90 views
-3

我在将字典中的某些项目导出为CSV时遇到问题。我可以导出“名称”而不是“图片”(图片网址)。如何使用Python将字典导出为CSV?

这是我的字典的一部分的例子:

new = [{ "name" : "peter", "picture" : "https://img.evbuc.com/https%3A%2F%2Fcdn.evbuc.com%2Fimages%2F33500665%2F25911657759%2F1%2Foriginal.jpg?h=200&w=450&rect=0%2C581%2C6000%2C3000&s=bfaa2901b8c906a66c51563d15c6df12"}, 
{"name" : "jim" , "picture" : "https://img.evbuc.com/https%3A%2F%2Fcdn.evbuc.com%2Fimages%2F32935536%2F10115879927%2F1%2Foriginal.jpg?h=200&w=450&rect=0%2C40%2C624%2C312&s=c67e995e83234ab460707ac21f3541f8"}] 

EDIT(我犯了一个错误的命名为是什么指出,这似乎是更新后,现在的工作)。

这是我写的代码(这适用于“名”而不是“图片”):

import csv 

test = [] 

for document in new: 
    event_obj = {} 

    # Get name 
    event_obj['name'] = document['name'] 

    # Get images 
    event_obj['picture'] = document['picture'] 

    test.append(event_obj) 

# Create CSV file 
with open('Eventbrite_events.csv', 'w', newline='') as csvfile: 
    fields = ['name', 'picture'] 
    writer = csv.DictWriter(csvfile, fieldnames=fields) 
    writer.writeheader() 
    for x in test: 
     writer.writerow(x) 
print(csvfile) 
+3

检查命名图片>图片 –

+0

似乎现在工作。谢谢@Anar Bayramov –

回答

1

new列表中包含字典用钥匙picture但你试图访问一个名为images

import csv 

new = [ 
    { "name" : "peter", "picture" : "https://img.evbuc.com/https%3A%2F%2Fcdn.evbuc.com%2Fimages%2F33500665%2F25911657759%2F1%2Foriginal.jpg?h=200&w=450&rect=0%2C581%2C6000%2C3000&s=bfaa2901b8c906a66c51563d15c6df12"}, 
    {"name" : "jim" , "picture" : "https://img.evbuc.com/https%3A%2F%2Fcdn.evbuc.com%2Fimages%2F32935536%2F10115879927%2F1%2Foriginal.jpg?h=200&w=450&rect=0%2C40%2C624%2C312&s=c67e995e83234ab460707ac21f3541f8"}] 

test = [] 

for document in new: 
    event_obj = {} 

    # Get name 
    event_obj['name'] = document['name'] 

    # Get images 
    event_obj['images'] = document['picture'] 

    test.append(event_obj) 

# Create CSV file 
with open('Eventbrite_events.csv', 'w', newline='') as csvfile: 
    fields = ['name', 'images'] 
    writer = csv.DictWriter(csvfile, fieldnames=fields) 
    writer.writeheader() 
    writer.writerows(test) 

您还可以利用writerows()一次写入所有行。

这会给你一个CSV文件,如下所示:

name,images 
peter,https://img.evbuc.com/https%3A%2F%2Fcdn.evbuc.com%2Fimages%2F33500665%2F25911657759%2F1%2Foriginal.jpg?h=200&w=450&rect=0%2C581%2C6000%2C3000&s=bfaa2901b8c906a66c51563d15c6df12 
jim,https://img.evbuc.com/https%3A%2F%2Fcdn.evbuc.com%2Fimages%2F32935536%2F10115879927%2F1%2Foriginal.jpg?h=200&w=450&rect=0%2C40%2C624%2C312&s=c67e995e83234ab460707ac21f3541f8 

你也可以避免建设test作为一种替代的方法来重命名条目,如下所示:

import csv 

new = [ 
    {"name" : "peter", "picture" : "https://img.evbuc.com/https%3A%2F%2Fcdn.evbuc.com%2Fimages%2F33500665%2F25911657759%2F1%2Foriginal.jpg?h=200&w=450&rect=0%2C581%2C6000%2C3000&s=bfaa2901b8c906a66c51563d15c6df12"}, 
    {"name" : "jim" , "picture" : "https://img.evbuc.com/https%3A%2F%2Fcdn.evbuc.com%2Fimages%2F32935536%2F10115879927%2F1%2Foriginal.jpg?h=200&w=450&rect=0%2C40%2C624%2C312&s=c67e995e83234ab460707ac21f3541f8"}] 

# Create CSV file 
with open('Eventbrite_events.csv', 'w', newline='') as csvfile: 
    fields = ['name', 'images'] 

    writer = csv.DictWriter(csvfile, fieldnames=fields) 
    writer.writeheader() 

    for row in new: 
     row['images'] = row.pop('picture') 
     writer.writerow(row) 
0

Pandas更适合你的问题。

import pandas as pd 

df = pf.DataFrame(list_of_dict) 

df.columns = ["name", "image or picture"] 

df.to_csv("test.csv", index=0)