如何将列表内容作为单行写入csv文件

时间:2015-10-12 07:42:03

标签: python list csv

我有以下示例列表:

sample_list = [['test1', 'test2'], ['am', 'cm']]

我想将上面的列表写入csv文件。我使用以下代码:

with open('sample.csv', 'wb') as f_csv:
    writer = csv.writer(f_csv, delimiter=',', dialect='excel')
    writer.writerows(sample_list)
f_csv.close() 

问题在于,当我打开sample.csv时,我发现test1test2存储在不同的列中,amcm相同(已存储)在下一行)

我需要以下列形式输出:每个子列表在单独的行中列出,子列表的元素在一列中列出。

test1,test2
am,cm

请问我能在哪里出错。

2 个答案:

答案 0 :(得分:3)

如果列表值的类型为{,则需要更改列表以在转换后的字符串内容中包含逗号,作为值 {1}},转换它们,然后从列表中创建字符串:

int

如果我们在原始列表中添加一个数字,那么:

sample_list = [[",".join([str(item) for item in sub])] for sub in sample_list]

列表理解后,列表的格式为:

sample_list = [['test1', 'test2', 392], ['am', 'cm']]

然后,在此列表列表中调用sample_list = [['test1,test2,392'], ['am,cm']]

writerows()

with open('sample.csv', 'wb') as f_csv: writer = csv.writer(f_csv, delimiter=',', dialect='excel') writer.writerows(sample_list) 中的输出格式为:

sample.csv

P.s你不需要关闭"test1,test2,392" "am,cm" 。将其与f_csv关键字一起使用会自动处理。

答案 1 :(得分:0)

以下脚本应该每行生成一列:

import csv

sample_list = [['test1', 'test2', 1, 2], ['am', 'cm', 3, 4]]

with open('sample.csv', 'wb') as f_csv:
    writer = csv.writer(f_csv, dialect='excel')
    for sample in sample_list:
        writer.writerow([','.join(map(str, sample))])

创建文件如下:

"test1,test2,1,2"
"am,cm,3,4"

在Excel中打开时,会产生一列。

enter image description here