首页 > 解决方案 > 使用带有标题样式的 Python 将字典转换为 CSV

问题描述

对于同样的 Stack Overflow 问题,如何将字典列表输出到 Excel 工作表?.

对于jossef-harush 的xlsx 代码,我们可以使用:

import xlsxwriter

# ...

def create_xlsx_file(file_path: str, headers: dict, items: list):
    with xlsxwriter.Workbook(file_path) as workbook:
        worksheet = workbook.add_worksheet()
        worksheet.write_row(row=0, col=0, data=headers.values())
        header_keys = list(headers.keys())
        for index, item in enumerate(items):
            row = map(lambda field_id: item.get(field_id, ''), header_keys)
            worksheet.write_row(row=index + 1, col=0, data=row)
headers = {
    'bank': 'Money in Bank',
    'dailyWinners': 'Daily Winners',
    'dailyFree': 'Daily Free',
    'user': 'User',
}

players = [
    {'dailyWinners': 3, 'dailyFreePlayed': 2, 'user': 'Player1', 'bank': 0.06},
    {'dailyWinners': 3, 'dailyFreePlayed': 2, 'user': 'Player2', 'bank': 4.0},
    {'dailyWinners': 1, 'dailyFree': 2, 'user': 'Player3', 'bank': 3.1},
    {'dailyWinners': 3, 'dailyFree': 2, 'user': 'Player4', 'bank': 0.32}
]

create_xlsx_file("my xslx file.xlsx", headers, players)

为了创建 CSV 文件,我需要在上面的代码中做哪些更改?

create_csv_file("my csv file.csv", headers, player)

标签: pythonexcelcsvdictionary

解决方案


import csv

def create_csv_file(file_path, headers, items):
    with open(file_path, "wt") as f:
        dw = csv.DictWriter(f, headers.values(), extrasaction='ignore')
        dw.writeheader()
        for row in items:
            dw.writerow({headers.get(k): v for (k, v) in row.items()})

Money in Bank,Daily Winners,Daily Free,User
0.06,3,,Player1
4.0,3,,Player2
3.1,1,2,Player3
0.32,3,2,Player4

请注意,这将忽略任何不在headers;中的 dict 键。在你的情况下,dailyFreePlayeds。


推荐阅读