Python:将点数据导出为每列对应 x、y、z 坐标的 CSV 文件
import csv
x=[1,2,3,4,5]
y=[2,3,4,5,6]
z=[3,4,5,6,7]
data=[x,y,z]
out = csv.writer(open('myfile.csv',"w"), delimiter=',',quoting=csv.QUOTE_ALL)
out.writerows(zip(*data))
P(x, y, z) 是一个三维点。上面的数组分别对应 x、y 和 z 坐标。因此,空间中有五个点。
我该如何将这些点导出到 CSV 文件中,让每一列对应 x、y 和 z 坐标呢?
我需要详细的代码示例。非常感谢你的帮助!
2 个回答
0
应该可以正常工作:
import csv
x = [1,2,3,4,5]
y = [2,3,4,5,6]
z = [3,4,5,6,7]
data = zip(x, y, z)
with open("filename.csv", "a") as f:
coords = [map(str, tupl) for tupl in data]
writer = csv.writer(f, delimiter=',')
for line in coords:
writer.writerow(line)
0
你的原始文件运行得很好,但你没有关闭这个文件。如果你通过命令提示符运行这个文件,Python 退出时可能会自动关闭并保存文件,但如果是通过图形界面运行,文件可能会保持打开状态而没有保存。
要解决这个问题,可以使用 with
语句,这样在 with
的范围结束时文件会自动关闭:
import csv
x=[1,2,3,4,5]
y=[2,3,4,5,6]
z=[3,4,5,6,7]
data=[x,y,z]
with open('myfile.csv','wb') as f:
out = csv.writer(f, delimiter=',',quoting=csv.QUOTE_ALL)
out.writerows(zip(*data))
注意,使用 csv
模块时应该用二进制模式 'wb'
。
输出结果:
"1","2","3"
"2","3","4"
"3","4","5"
"4","5","6"
"5","6","7"
如果你使用的是没有 with
的旧版本 Python,只需把文件赋值给一个变量,之后再关闭它:
f = open('myfile.csv','wb')
out = csv.writer(f, delimiter=',',quoting=csv.QUOTE_ALL)
out.writerows(zip(*data))
f.close()