如何用Python将列表按每8个元素换行保存为CSV文件
解决Python列表按每行8个元素保存为CSV的问题
没问题,我来帮你搞定这个需求!你想要把一维列表分成每行8个元素写入CSV,不管用NumPy还是纯Python都能轻松实现,下面给你两种实用方案:
方案一:用NumPy实现(延续你已有的思路)
你之前用np.savetxt没达到预期效果,是因为直接传入一维数组时,默认会每行输出一个元素。我们只需要先把一维数组重塑成每行8个元素的二维结构,再保存就可以了:
import numpy as np a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] # 转成numpy数组并自动计算行数,重塑为每行8列的二维数组 arr = np.array(a).reshape(-1, 8) # 保存为CSV,指定分隔符为逗号,输出格式为整数 np.savetxt('fname.csv', arr, fmt='%d', delimiter=',')
生成的fname.csv内容就是你想要的格式:
1,2,3,4,5,6,7,8
9,10,11,12,13,14,15,16
方案二:纯Python实现(无需依赖NumPy)
如果不想引入NumPy依赖,直接用Python内置的文件操作也能实现:
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] with open('fname.csv', 'w') as f: # 以步长8遍历列表,每次截取一组8个元素 for i in range(0, len(a), 8): # 将当前组的元素转为字符串,用逗号拼接成一行 line = ','.join(map(str, a[i:i+8])) # 写入文件并换行 f.write(line + '\n')
这个方法通过切片a[i:i+8]每次提取8个元素,再拼接成符合CSV格式的行,逐行写入文件,最终效果和NumPy方案完全一致。
内容的提问来源于stack exchange,提问作者Jimbo
相关产品推荐
相关产品推荐

