首页 > 解决方案 > Django - 将字典列表导出到 CSV

问题描述

我在views.py中创建了一个字典列表,

my_list= [
{'user': 1000, 'account1': 100, 'account2': 200, 'account3': 100},
{'user': 1001, 'account1': 110, 'account2': 100, 'account3': 250},
{'user': 1002, 'account1': 220, 'account2': 200, 'account3': 100},
]

我想将其导出到 csv 文件。

    response = HttpResponse(content_type='text/csv')
    response['Content-Disposition'] = 'attachment; filename="mylist.csv"'

    writer = csv.writer(response)
    for data in my_list:
        writer.writerow(data)

    return response

我知道“对于 my_list 中的数据”有一个错误。my_list 包含所有键和值。

如何仅获取 my_list 的密钥?还是有另一种将列表导出到 csv 的方法?

(我使用 django 2 和 python3.4)

标签: pythondjango

解决方案


你需要DictWriter

演示:

import csv
my_list= [
{'user': 1000, 'account1': 100, 'account2': 200, 'account3': 100},
{'user': 1001, 'account1': 110, 'account2': 100, 'account3': 250},
{'user': 1002, 'account1': 220, 'account2': 200, 'account3': 100},
]

with open(filename, "w") as infile:
    writer = csv.DictWriter(infile, fieldnames=my_list[0].keys())
    writer.writeheader()
    for data in my_list:
        writer.writerow(data)

with open(filename, 'rb') as infile:
    response = HttpResponse(infile, content_type='text/csv')
    response['Content-Disposition'] = 'attachment; filename=mylist.csv'
    return response

推荐阅读