繁体   English   中英

如何使用Python将字典导出为CSV?

[英]How to export dictionary as CSV using Python?

我在将字典中的某些项目导出到CSV时遇到问题。 我可以导出“名称”,但不能导出“图像”(图像URL)。

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

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"}]

编辑(正如我指出的那样,我在命名上犯了一个错误。更新后似乎现在可以使用)。

这是我编写的代码(适用于“名称”,但不适用于“图片”):

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)

您的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)

Pandas更适合您的问题。

import pandas as pd

df = pf.DataFrame(list_of_dict)

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM