【问题标题】:adding dictionary to csv file将字典添加到 csv 文件
【发布时间】:2015-06-24 16:00:06
【问题描述】:

我的字典如下:

my_d ={'2010-01-02': [0.696083, 0.617865], '2010-01-01': [0.697253, 0.618224], '2010-01-03': [0.696083, 0.617865]}

我希望输出如下:

DATE,EUR,GBP
2010-01-02,0.696083,0.617865
2010-01-03,0.697253,0.618224
2010-01-03,0.696083,0.617865

我试过这个:

my_list = ["date", "EUR", "GBP"]
with open(fname, 'w',newline = '') as my_csv:
csv_writer = csv.writer(my_csv, delimiter=',')
csv_writer.writerow(my_list)
csv_writer.writerows(my_d)

但 csv 文件看起来不像那样。另请注意,在我的代码中,用户可以选择每个键有多少个值,所以在这个例子中它有两个,在另一个例子中它可能有三个这也意味着 my_list 的大小会增加,但我相信第一行已经可以满足这一点,我只需要其他行的帮助,我需要它来处理任意数量的键。

【问题讨论】:

  • 你的输出实际上是什么样子的?

标签: python csv dictionary python-3.4


【解决方案1】:

您需要遍历您的字典项目,然后写入您的文件,最好使用csv 模块处理csv 文件:

my_list = ["date", "EUR", "GBP"]
import csv
my_d ={'2010-01-02': [0.696083, 0.617865], '2010-01-01': [0.697253, 0.618224], '2010-01-03': [0.696083, 0.617865]}
with open('fname.csv', 'wb') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=',')
    spamwriter.writerow(my_list)
    for mydate in sorted(my_d.keys()):
        spamwriter.writerow([mydate]+my_d[mydate])

请注意打开文件时没有newline=''。这允许文件具有“正常”换行符(通常是 '\n''\r\n'

请注意,就像您在 python 3.x 中一样,您可以使用w 模式打开文件!

【讨论】:

  • 不应该是'w' 而不是'wb' 以便您获得自动换行符转换吗?
  • @tdelaney 是的,我没有注意到它的 python 3.x!
  • 现在一切都很完美,除了一件事,csv文件没有按时间顺序输出日期!
  • @StevenGhandi 因为 dict 是无序的!
  • 有没有办法解决这个问题?
猜你喜欢
  • 2021-01-12
  • 2015-03-21
  • 2012-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多