【问题标题】:python, Storing and Reading varying dictionary size information in a csv filepython,在csv文件中存储和读取不同的字典大小信息
【发布时间】:2016-03-24 15:33:41
【问题描述】:

我已经实现了一个具有 SQL 查询和结果的 python 字典。

logtime = time.strftime("%d.%m.%Y)
sqlDict = {             'time':logtime,
            'Q1' : 50,
            'Q2' : 15,
            'Q3' : 20,
            'Q4' : 10,
            'Q5' : 30,
}

每天,结果都以字典格式写入 CSV 文件。注意:Python 字典没有排序。因此,当将其他查询(例如 Q7、Q8、Q9...)添加到字典中时,每行中的列可能会有所不同。

('Q1', 25);('Q3', 23);('Q2', 15);('Q5', 320);('Q4', 130);('time', '20.03.2016')

('Q1', 35);('Q2', 21);('Q3', 12);('Q5', 30);('Q4', 10);('time', '21.03.2016')

('Q4', 22);('Q3', 27);('Q2', 15);('Q5', 30);('Q1', 10);('time', '22.03.2016')

通过在字典中添加新的 SQL 查询,附加信息也保存在同一个 csv 文件中。

所以,例如加上 Q7,字典看起来像

sqlDict = { 'time':logtime,
            'Q1' : 50,
            'Q2' : 15,
            'Q3' : 20,
            'Q4' : 10,
            'Q5' : 30,
            'Q7' : 5,
}

csv 文件看起来像

('Q1', 25);('Q3', 23);('Q2', 15);('Q5', 320);('Q4', 130);('时间', '20.03 .2016')

('Q1', 35);('Q2', 21);('Q3', 12);('Q5', 30);('Q4', 10);('time', '21.03.2016')

('Q4', 22);('Q3', 27);('Q2', 15);('Q5', 30);('Q1', 10);('time', '22.03.2016')

('Q1', 50);('Q3', 20);('Q2', 15);('Q5', 30);('Q4', 10);('time', '23.03.2016');('Q7', 5)

我需要绘制 csv 中可用的所有信息,即对于所有 SQL 键,时间与值(数字)图。

csv 文件不包含常规模式。最后,我想绘制一个包含所有可用 Q 及其对应值的图表。如果行中缺少 Q,则程序应假定该日期的值为 0。

【问题讨论】:

    标签: python csv dictionary size varying


    【解决方案1】:

    您只需要处理您的 csv。你知道每一行的最后一个单元格是日期,所以它的格式对我来说很漂亮。

    import csv
    
    with open("file.csv","r") as f:
        spamreader = csv.reader(f,delimiter=";")
        for row in spamreader:
            for value in range(len(row)):
                query,result = value.strip('(').strip(')').split(",")
                if query != "time":
                    # process it
                    # query = 'QX'
                    # result = 'N'
                else:
                    # query = 'time'
                    # result = 'date'
    

    困扰你的是你会将所有内容都读取为字符串,因此你将不得不在 coma 上拆分并剥离 '(' 和 ')'

    例如:

    query,result = row[x].strip('(').strip(')').split(", ")
    

    然后查询 = 'Q2' 和结果 = 15(类型 = 两个字符串)

    【讨论】:

    • 我刚刚编辑了帖子。时间不必在最后一列。随着向字典中添加了额外的 Q,一个新的(随机)oder 可能会出现在 csv 中,因为没有对 python 字典进行排序。 csv 文件不包含常规模式。最后,我想绘制一个图表,其中包含 csv 中所有可用的 Q 及其对应的带有日期戳的值。如果行中缺少 Q,程序应假定值为 0。
    • 好吧,你仍然可以这样做,但它需要一些解决方法,你还有兴趣吗?
    • 是的,我仍然感兴趣。对于绘图,我正在考虑制作另一个以 Qs 为键的字典,它将通过读取 csv 的每一行并将信息添加到字典中,并在列表中使用带有日期的相应值来填充它。这会是一个好的实现吗?
    • @Sha 已编辑。字典的想法似乎很好,虽然我不明白你想用日期做什么
    • 对于每个 Q,我想绘制值与日期。
    猜你喜欢
    • 2017-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    • 2022-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多