开发者社区> 问答> 正文

使用datetime.datetime对象作为键向csv编写字典

我有一个包含datetime.datetime对象作为键的字典,我想将它们写到一个csv文件中。但是,将引发以下错误:

Traceback (most recent call last):
  File "/Users/macbook/Documents/08_PYTHON/00_PROJECTS/Navps/code/scrape.py", line 179, in <module>
    writer.writerow(data)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/csv.py", line 154, in writerow
    return self.writer.writerow(self._dict_to_list(rowdict))
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/csv.py", line 147, in _dict_to_list
    wrong_fields = rowdict.keys() - self.fieldnames
AttributeError: 'datetime.datetime' object has no attribute 'keys'

这是我的代码如下:

csv_columns = ['Date','Fund Value']
try:
    with open(bof, 'w') as csvfile:
        writer = csv.DictWriter(csvfile, fieldnames=csv_columns)
        writer.writeheader()
        for data in csvdict:
            writer.writerow(data)
except IOError:
    print("I/O error")

这是csvdict的样子:

csvdict = {datetime.datetime(2019, 1, 16, 0, 0): '2.8010', datetime.datetime(2019, 2, 8, 0, 0): '2.8295', datetime.datetime(2019, 2, 7, 0, 0): '2.8326',....}

处理datetime.datetime对象作为键时,我缺少什么吗?我真的很想把日期当作我的钥匙。这根本不可能吗?

注意:如果有帮助,请在Python 3.8上运行此脚本

问题来源:stackoverflow

展开
收起
is大龙 2020-03-24 20:26:39 588 0
1 条回答
写回答
取消 提交回答
  • 问题是csv.DictWriter希望每一行都是一个字典。因此,要使用它,您需要将每个键,csvdict中的值项转换为一行。内置的zip()函数很容易:

    import csv
    import datetime
    
    
    bof = 'bof.csv'
    csvdict = {datetime.datetime(2019, 1, 16, 0, 0): '2.8010',
               datetime.datetime(2019, 2, 8, 0, 0): '2.8295',
               datetime.datetime(2019, 2, 7, 0, 0): '2.8326',}
    
    csv_columns = ['Date','Fund Value']
    try:
        with open(bof, 'w', newline='') as csvfile:
            writer = csv.DictWriter(csvfile, fieldnames=csv_columns)
            writer.writeheader()
            for row in (dict(zip(csv_columns, item)) for item in csvdict.items()):
                writer.writerow(row)
    except IOError:
        print("I/O error")
    

    回答来源:stackoverflow

    2020-03-24 20:26:46
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载