Python:将点数据导出为每列对应 x、y、z 坐标的 CSV 文件

0 投票
2 回答
2509 浏览
提问于 2025-04-18 08:30
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()

撰写回答