首页 > 解决方案 > 无法让 dictWriter 构建 csv

问题描述

我是 Python 世界的新手,所以很难理解 dictwriter 的工作原理。我正在尝试从字典中创建一个 csv 文件,其中每个键都附加了一个元组作为值,但无法弄清楚如何。代码(字典“book”必须出名为“saving”的函数):

book = {"000011111":("John","Doe",23,"Kendo"),"000022222":("Petra","Richards",22, "Swimming")}
import csv
def saving():
    try:
        f = open("file1.csv", "w+")
        fields = ["Card", "Name", "Surname", "Age", "Hobbie"]
        writer = csv.DictWriter(f, fieldnames=fields)
        writer.writeheader()
        writer.writerows({"Card": book.keys(), "Name": book[0], "Surname": book[1], "Age": book[2], "Hobbie": book[3]})
        print("Data saved to csv")
        return True
    except IOError:
        print("I/O ERROR")
        return False
saving()

给我:

关键错误:0

标签: python-3.xfunctioncsvdictionarytuples

解决方案


book是一个字典。它不能按位置(例如book[0])索引,它有键和值。您可能希望遍历 中的所有键/值对book,如下所示:

book = {"000011111":("John","Doe",23,"Kendo"),"000022222":("Petra","Richards",22, "Swimming")}
def saving():
    try:
        for codekey, first_last_age_hobby in book.items():
            f = open("file1.csv", "w+")
            fields = ["Card", "Name", "Surname", "Age", "Hobbie"]
            writer = csv.DictWriter(f, fieldnames=fields)
            writer.writeheader()
            writer.writerows({
                "Card": codekey,
                "Name": first_last_age_hobby[0],
                "Surname": first_last_age_hobby[1],
                "Age": first_last_age_hobby[2],
                "Hobbie": first_last_age_hobby[3]
            })
            print("Data saved to csv")
        return True
    except IOError:
        print("I/O ERROR")
        return False

您错过了一个循环,以获取每个键的四个值。快乐编码!


推荐阅读