2016-06-07 118 views
2

我想使用python将类型列表变量存储到csv文件中。以下是我在StackOverflow的时间和Python文档后得到:使用python将列表存储到csv文件中

代码:

row = {'SgDescription': 'some group', 'SgName': 'sku', 'SgGroupId': u'sg-abcdefgh'} 
new_csv_file = open("new_file.csv",'wb') 
ruleswriter = csv.writer(new_csv_file,dialect='excel',delimiter=',') 
ruleswriter.writerows(row) 
new_csv_file.close() 

结果:

$ more new_file.csv 
S,g,D,e,s,c,r,i,p,t,i,o,n 
S,g,N,a,m,e 
S,g,G,r,o,u,p,I,d 

任何人都可以请指教如何将值存储到像这样的文件:

some group,sku,sg-abcdefgh 

谢谢!

回答

1

writerows()预期序列的序列,例如列表的列表。你正在传递一个字典,并且字典恰好是可迭代的:它返回字典的键。每个键 - 一个字符串 - 恰好也是可迭代的。所以你得到的是每个单元每个可迭代元素,它是一个字符。你有你问它究竟什么:-)

你想要做什么是写一行,钥匙,那么也许另一个与值,例如:

import csv 

row = { 
    'SgDescription': 'some group', 
    'SgName': 'sku', 
    'SgGroupId': u'sg-abcdefgh' 
} 


with open("new_file.csv",'wb') as f: 
    ruleswriter = csv.writer(f) 
    ruleswriter.writerows([row.keys(), row.values()]) 

如果订单重要的是,使用collections.OrderedDict

+0

非常感谢,使用row.values()解决了我的问题 – Mike

1

写入一个CSV文件之前提取所需的数据,

row = [row['SgDescription'], row['SgName'], row['SgGroupId']]  # ['some group', 'sku', u'sg-abcdefgh'] 


# write to a csv file 
with open("new_file.csv",'wb') as f: 
    ruleswriter = csv.writer(f) 
    ruleswriter.writerow(row) 

PS:如果你不关心顺序,只需使用row.values()


或者使用csv.DictWriter

import csv 

row = {'SgDescription': 'some group', 'SgName': 'sku', 'SgGroupId': u'sg-abcdefgh'} 
with open('new_file.csv', 'w') as csvfile: 
    fieldnames = ['SgDescription', 'SgName', 'SgGroupId'] 
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames) 
    writer.writerow(row) 
相关问题