Python2.7嵌套列表导出CSV:子列表元素存单个单元格
解决Python 2.7中CSV导出时合并子列表到单个单元格的问题
你的问题出在对csv.writer.writerows()的用法理解上——这个方法会把每个子列表当成单独的一行,所以每个子列表里的元素会被拆分成该行的不同单元格。而你需要的是把所有子列表合并成一行里的不同单元格,每个单元格对应一个子列表的拼接结果。
正确实现步骤
核心思路是先把每个子列表的元素用空格(或你需要的分隔符)拼接成单个字符串,再把这些字符串组成一个新的列表,最后写入CSV的一行中。
代码示例
推荐用with语句来处理文件,这样更安全(自动关闭文件):
import csv export_list = [['abc'],['1','2','3','4','5'],['m','n','o']] # 把每个子列表转换成空格分隔的字符串 merged_data = [' '.join(sublist) for sublist in export_list] with open("./out.csv", "wb") as outfile: writer = csv.writer(outfile) # 写入表头行 writer.writerow(['list1', 'list2', 'list3']) # 写入数据行(每个子列表对应一个单元格) writer.writerow(merged_data)
效果说明
运行后生成的CSV内容如下:
list1,list2,list3 abc,1 2 3 4 5,m n o
用表格软件打开时,就会呈现你想要的格式:
| list1 | list2 | list3 |
|---|---|---|
| abc | 1 2 3 4 5 | m n o |
额外提示
如果你的子列表元素中包含逗号,csv模块会自动用双引号包裹对应的单元格内容,避免CSV格式混乱,无需额外处理。
内容的提问来源于stack exchange,提问作者Dsujan
相关产品推荐
相关产品推荐

