0

我正在尝试“清理”一些数据 - 我正在创建我需要保留的频道的字典,然后我有一个if块来创建具有正确舍入的第二个字典。

字典看起来像这样:

{'time, s': (imported array), 'x temp, C':(imported array),
 'x pressure, kPa': (diff. imported array).....etc}

每个导入的数组都是一维的。

我在看这个例子,但我并没有完全得到解析它的方法,所以我最终得到了我想要的。

我想要的输出是一个 csv 文件(不关心分隔符是空格还是逗号或其他),第一行是键,后续行只是值。

我觉得我缺少的是如何正确使用地图功能。

另外,我想知道我是否DictWriter在应该使用DictReader.

这是我最初尝试的:

with open((filename), 'wb') as outfile:
    write = csv.DictWriter(outfile, Fieldname_order)
    write.writer.writerow(Fieldname_order)
    write.writerows(data)
4

2 回答 2

1

编辑:在这个例子data中是一个字典列表。csv 中的每一行包含每个键的一个值。

要编写带有标题行和数据行的字典:

with open(filename, 'wb') as outfile: 
    writer = csv.DictWriter(outfile, fieldnames)
    writer.writeheader()
    writer.writerows(data)

要将数据作为字典读取,您需要使用DictReader

with open(filename, 'r') as infile:
    reader = csv.DictReader(infile)
    data = [row for row in reader]
于 2013-11-01T14:04:04.337 回答
1

DictWriter的 API 与您拥有的数据结构不匹配。DictWriter需要字典列表。你有一个列表字典。

你可以使用普通的csv.writer

my_data = {'time, s': [0,1,2,3], 'x temp, C':[0,10,20,30],
 'x pressure, kPa': [0,100,200,300]}
import csv
with open('outfile.csv', 'w') as outfile:
   writer = csv.writer(outfile)
   writer.writerow(my_data.keys())
   writer.writerows(zip(*my_data.values()))

这将以任意顺序写入列,该顺序可能会因运行而异。使顺序一致的一种方法是将最后两行替换为:

   writer.writerow(sorted(my_data.keys()))
   writer.writerows(zip(*(my_data[k] for k in sorted(my_data.keys()))))
于 2013-11-01T14:23:38.433 回答