将列表导出为CSV或XML以及每个子列表在其自己的列中 - 重新发布

时间:2012-07-23 21:12:55

标签: python xml csv

我确信有一种简单的方法可以做到这一点,所以这里有。我正在尝试将列表导出为CSV列。 (基本上,这是另一个程序将如何使用我生成的数据。)我有一个名为[frames]的组,其中包含[frame001],[frame002],[frame003]等。我想要CSV文件生成的内容为第一列中[frame001]的所有值,第二列中为[frame002],依此类推。我想如果我可以将文件保存为CSV我可以在Excel中操作它,但是,我认为有一个解决方案,我可以编程跳过这一步。

这是我到目前为止尝试使用的代码:

import csv

data = [frames]
out = csv.writer(open(filename,"w"), delimiter=',',quoting=csv.QUOTE_ALL)
out.writerow(data)

我也尝试过:

import csv

myfile = open(..., 'wb')
wr = csv.writer(myfile, quoting=csv.QUOTE_ALL)
wr.writerow(mylist)

最近我尝试过:

import csv

data = [frames]
out = csv.writer(open(filename,"w"), delimiter=',',quoting=csv.QUOTE_ALL)
out.writerows(zip(*data))

经过更多的研究,我实际上需要构建一个XML文件,但我仍然需要数据的顺序正确。也就是说,列中的[frame001]的内容,下一列中的[frame002]等等。所有帧都包含相同数量的信息。

再次感谢您的帮助!

这是前两列的数据示例: [255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,025,255 ,0,0,255,0,0],[0,171,205,0,171,205,0,171,205,0,171,205,0,171,205,0,171,205,0 ,171,205,0,171,205,0,171,205,0,171,205]

应该是:

255 0
0   171
0   205
255 0
0   171
0   205
255 0
0   171
0   205
255 0
0   171
0   205
255 0
0   171
0   205
255 0
0   171
0   205
255 0
0   171
0   205
255 0
0   171
0   205
255 0
0   171
0   205
255 0
0   171
0   205

我希望这是有道理的。

2 个答案:

答案 0 :(得分:0)

您的上一个解决方案应该可以正常工作。你得到了什么错误?

要转换为xml,您只需为每个“行”创建一个字典,然后使用此处列出的解决方案之一:Serialize Python dictionary to XML

答案 1 :(得分:0)

XML实际上不是基于行和列的格式,如csv;它是分层的,可能不是存储行/列数据的最佳格式。您需要使用标记来指定行和列,如果要将其导入另一个应用程序,则需要知道行和列标记要正确解析它。

第二个应用程序也是用python编写的吗?如果是这样,只需使用python pickle模块来序列化您的2D python列表。这样你的第二个应用程序就可以将它作为2D列表重新读回来,而不是来回编组为csv或xml。