Python中如何导出两列数据至CSV?现有代码修改咨询
实现Python列表导出为两列CSV的修改方案
首先得先指出你原来代码里的几个小问题:
- 循环里的
x是从range生成的整数(0和1),你写的x[0]会直接报错,因为整数没有索引; - 每次循环都用
"w"模式打开文件,这会覆盖之前写入的内容,最后只会留下最后一次循环的结果。
要导出两列数据,核心是把X和Y中对应位置的元素配对,然后每行写入一对元素作为两列。下面是修改后的完整代码:
import csv X = ([1,2,3],[7,8,9]) Y = ([4,5,6],[3,4,5]) csvfile = "C:/Temp/aaa.csv" # 只打开一次文件,避免覆盖内容;newline=''是csv模块推荐的写法,避免换行符问题 with open(csvfile, "w", newline='') as output: writer = csv.writer(output, lineterminator='\n') # 同时遍历X和Y中的子列表,把对应的子列表配对 for x_sub_list, y_sub_list in zip(X, Y): # 再遍历每个子列表里的对应元素,生成两列数据 for x_val, y_val in zip(x_sub_list, y_sub_list): # writerow传入包含两个元素的列表,就会生成两列 writer.writerow([x_val, y_val])
运行这段代码后,你的aaa.csv内容会是这样的:
1,4 2,5 3,6 7,3 8,4 9,5
如果你的需求是把每个子列表作为一行的两部分(比如第一行是1,2,3和4,5,6,每行包含6个值),那只需要把内层循环去掉,直接合并子列表写入:
import csv X = ([1,2,3],[7,8,9]) Y = ([4,5,6],[3,4,5]) csvfile = "C:/Temp/aaa.csv" with open(csvfile, "w", newline='') as output: writer = csv.writer(output, lineterminator='\n') for x_sub, y_sub in zip(X, Y): # 把两个子列表合并成一个列表,写入一行 writer.writerow(x_sub + y_sub)
内容的提问来源于stack exchange,提问作者user6703592
相关产品推荐
相关产品推荐

