Python 语法-将词典另存为csv文件
我正在尝试“清理”一些数据-我正在创建一个需要保留的通道字典,然后我有一个Python 语法-将词典另存为csv文件,python,csv,dictionary,Python,Csv,Dictionary,我正在尝试“清理”一些数据-我正在创建一个需要保留的通道字典,然后我有一个if块来创建第二个具有正确舍入的字典 字典如下所示: {'time, s': (imported array), 'x temp, C':(imported array), 'x pressure, kPa': (diff. imported array).....etc} 每个导入的数组都是一维的 我一直在看,但是我没有找到解析它的方法,所以我最终得到了我想要的 我想要的输出是一个csv文件(不管分隔符是空格还是逗号
if
块来创建第二个具有正确舍入的字典
字典如下所示:
{'time, s': (imported array), 'x temp, C':(imported array),
'x pressure, kPa': (diff. imported array).....etc}
每个导入的数组都是一维的
我一直在看,但是我没有找到解析它的方法,所以我最终得到了我想要的
我想要的输出是一个csv文件(不管分隔符是空格还是逗号或其他什么),第一行是键,后面的行只是值
我觉得我缺少的是如何正确使用map函数
另外,我想知道我是否在使用DictWriter
而我应该使用DictReader
这是我最初尝试的:
with open((filename), 'wb') as outfile:
write = csv.DictWriter(outfile, Fieldname_order)
write.writer.writerow(Fieldname_order)
write.writerows(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]
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()))
DictWriter
的API与您拥有的数据结构不匹配DictWriter
需要字典列表。你有一本列表词典
您可以使用普通的csv.writer
:
with open(filename, 'r') as infile:
reader = csv.DictReader(infile)
data = [row for row in reader]
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()))))
我不明白。我怎么告诉它从哪本字典开始写呢?误解了。您正在写入文件的词典是
data
,在本例中:writer.writerows(data)
。谢谢!现在,我的字段名出现了一个值错误。关于如何修复我的字段名,您有什么指导吗?我有一张单子,我把它们都排好了,但它吐在字典里第一个用的单子上。它决定‘油压,psi’实际上是O,i,l,,P,r,e,s,s,u,r,e,,,P,s,iStep返回一秒钟:您应该向DictWriter发送一个字典列表(数据应该是字典列表)。我现在在你的问题中看到你的字典包含数组。相反,您可以有一个字典列表,其中每行数据都是自己的字典。FieldName应该是一个字段名列表,按您希望打印的顺序排列:['time,s','x temp,C','x pressure,kPa',等等]
谢谢!这解决了我的问题。