如何将Python列表转换为CSV?输出不符合预期的问题求助
解决Python列表转CSV输出异常的问题
你遇到的核心问题是CSV输出把整个列表当成了单个单元格,这是因为调用writerow的时候多套了一层列表!
问题根源
csv.writer.writerow()方法需要接收一个可迭代对象(比如列表),其中每个元素对应CSV的一列。你现在写的writer.writerow([first_row_values])——把已经是列表的first_row_values又塞进了另一个列表里,相当于告诉writer:“我只有一列,内容是这个大列表”,所以它会把整个列表转成字符串写入单个单元格,就出现了你看到的带方括号的输出。
修正方案
直接把first_row_values传给writerow,不需要额外套一层列表:
# 替换原来的writerow调用 writer.writerow(first_row_values)
优化后的完整代码
另外,建议用with语句管理文件,这样能自动关闭文件避免资源泄漏,同时加上newline=''是csv模块的推荐写法,防止Windows系统下生成多余空行:
import csv # 假设ws是你已获取的worksheet对象 first_row = list(ws.rows)[1] first_row_values = [] first_row_values.append(value1) first_row_values.append(value2) first_row_values.append(value3) first_row_values.extend([cell.value for cell in first_row]) print(first_row_values) with open('output.csv', 'a+', newline='') as f: writer = csv.writer(f) writer.writerow(first_row_values)
修改后,first_row_values里的每个元素都会作为CSV的一列被正确写入,不会再出现整个列表被当成单个单元格的情况啦。
内容的提问来源于stack exchange,提问作者arcee123
相关产品推荐
相关产品推荐

