使用每个列表作为列编写csv

时间:2013-08-08 04:29:32

标签: python python-3.3

我有一个字典,其中包含每个键的两级嵌套列表,如下所示:

OrderedDict([(0,[['a','b','c','d'],['e','f','g','h']]), (1,[['i','j','k','l'],['m','n','o','p']])])

我想将每个嵌套列表作为列写入csv:

a,b,c,d      e,f,g,h
i,j,k,l      m,n,o,p

我从当前代码获得的输出是:

['a','b','c','d']      ['e','f','g','h']
['i','j','k','l']      ['m','n','o','p']

列是正确的,但我想删除括号[]和引号''

a,b,c,d      e,f,g,h
i,j,k,l      m,n,o,p

CODE:

with open('test.csv', 'w', newline='') as csv_file:
    writer = csv.writer(csv_file, quotechar='"', quoting=csv.QUOTE_ALL)
    for record in my_dict.values():
        writer.writerow(record)

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

这应该有效:

with open('test.csv', 'w', newline='') as csv_file:
    writer = csv.writer(csv_file, quotechar='"', quoting=csv.QUOTE_ALL)
    for record in my_dict.values():
        final = [",".join(index) for index in record]
        writer.writerow(final)

答案 1 :(得分:0)

我无法直观地看到record的外观,因为看起来每个值都应该是嵌套列表,这意味着每列应包含两个列表。如果它实际上是一次只从.values()写一个值,看起来你会得到一个包含两个列表的列。

无论如何,你应该通过.join()方法寻找你想要达到的目标:

for record in my_dict.values():
    writer.writerow(','.join(record))

但问题是,您正在制作CSV(逗号分隔值)文件,因此每个逗号都可以解释为字段分隔符。

问题:您是否考虑过在实例化csv.writer时使用不同的分隔符?