如何将包含子列表与整数的混合数据写入CSV得到1、2、3、4、5列
问题原因分析
- 调用
writerows()时,方法要求传入的参数是「行集合」,每一行必须是可迭代对象(对应每一列的内容)。你的原始数据[[1, 2, 3], 4, 5]中第二个、第三个元素是int类型,不是可迭代对象,因此触发iterable expected, not int报错。 - 直接调用
writerow(data)时,方法会把data的三个顶层元素作为三列处理,因此会把[1,2,3]整个当成第一列内容,不符合你要拆分五列的需求。
解决方法
你只需要先把嵌套的data打平为一维列表,再传入writerow()即可,示例代码如下:
import csv data = [[1, 2, 3], 4, 5] # 打平嵌套的列表(适配当前一层嵌套的数据结构) flattened = [] for item in data: if isinstance(item, (list, tuple)): flattened.extend(item) else: flattened.append(item) # 加newline=''避免Windows系统下生成的CSV出现多余空行 with open('test.csv', 'w', newline='') as f: writer = csv.writer(f) writer.writerow(flattened)
运行后生成的CSV文件内容为1,2,3,4,5,符合预期。
内容的提问来源于stack exchange,提问作者user11665646
相关产品推荐
相关产品推荐

