【问题标题】:Writing multiple dictionaries to CSV with one header with Python使用 Python 将多个字典写入 CSV,使用一个标题
【发布时间】:2014-08-03 13:43:12
【问题描述】:

我正在尝试将多个字典写入 csv 文件,其中标题(键)仅写入一次,行(值)基于键写入。我能够为两本词典解决这个问题,但是如果我得到多个需要编写的词典怎么办?

我正在流式传输已转换为 json 的推文,因此我尝试以按每个 JSON 键排序的 CSV 文件结束。这是对我正在尝试做的事情的更详细说明(Writing multiple JSON to CSV in Python - Dictionary to CSV 这是我试图最终得到的结果,但有数千个潜在的数据行(如果可能,最好按键排序):

这是我的两个字典的基本代码:

import csv

my_dict = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3', 'key4': 'value4', 'key5': 'value5', 'key6': 'value6', 'key7': 'value7'}
my_dict2 = {'key1': 'value1A', 'key2': 'value2A', 'key3': 'value3A', 'key4': 'value4A', 'key5': 'value5A', 'key6': 'value6A', 'key7': 'value7A'}

with open('mycsvfile.csv', 'wb') as f:
    w = csv.DictWriter(f, my_dict.keys())
    w.writeheader()
    w.writerow(my_dict)
    if my_dict.keys() == my_dict2.keys():
        w.writerow(my_dict2)

print my_dict

附: 我是初学者!

【问题讨论】:

    标签: python json csv twitter dictionary


    【解决方案1】:

    您可以将多个字典放在一个列表中。然后,您遍历该列表并仅写入键匹配的行。像这样的:

    keys = ['key1', 'key2', 'key3', 'key4', 'key5'] # and so forth..
    
    dictionaries = [my_dict, my_dict2] # Just an example, you probably build this list while you stream the tweets.
    
    with open('mycsvfile.csv', 'wb') as f:
        w = csv.DictWriter(f, my_dict.keys())
        w.writeheader()
        for d in [x for x in dictionaries if x.keys() == keys]: # only matching keys.
           w.writerow(d)
    

    【讨论】:

    • 这太棒了!但是,如果我假设我以 JSON 格式流式传输数百个字典怎么办?您将如何为作者设置输入?我认为附加一个巨大的字典列表是行不通的。
    • 你不能在字典进来的时候写吗?您还没有展示如何获得数据。
    • 我正在使用 tweepy 实时流式传输来自 Twitter 的数据。这是代码(stackoverflow.com/questions/24155319/…
    • 顺便说一句,当我流式传输 json(如上面的方法)时,它只写一个标题和第一行。
    • @verkter 提出了一个关于流媒体的新问题。没有更多细节是不可能回答的。
    猜你喜欢
    • 2019-02-12
    • 2021-02-02
    • 2019-02-19
    • 2014-08-01
    • 1970-01-01
    • 2020-07-18
    • 2021-06-15
    • 1970-01-01
    • 2018-04-08
    相关资源
    最近更新 更多