2012-07-23 72 views
0

我確信有一個簡單的方法可以做到這一點,所以在這裏。我正試圖將我的列表導出爲CSV列。 (基本上,這是另一個程序如何能夠使用我生成的數據。)我有一個名爲[frames]的組,其中包含[frame001],[frame002],[frame003]等。我想要CSV文件生成的第一列中的[frame001],第二列中的[frame002]的值等等。我想如果我可以將文件保存爲CSV文件,我可以在Excel中對其進行處理,但是,我認爲有一種解決方案可以跳過該步驟。將列表導出爲CSV或XML,並將每個子列表導出到其自己的列中 - 轉發

這是我一直在使用到目前爲止已經試過代碼:

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]等的內容。所有幀包含相同量的信息。

再次感謝您的幫助!

這是前2列看起來像數據的示例: [255,0,0,255,0,0,255, 0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0],[0,171,205,0,171,205, 205,0171,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 

我希望這是有道理的。

+0

你試過的最後一件東西的輸出是什麼,它以什麼方式不起作用? – kojiro 2012-07-23 21:20:23

+1

此外,這顯然是故意轉貼http://stackoverflow.com/questions/11605796/exporting-a-list-to-a-csv-space-separated-and-each-sublist-in-its-own-列 - 你應該更新這個問題並刪除這個問題。 – kojiro 2012-07-23 21:21:01

+0

我雖然說你有行列數據?您發佈的示例數據只是一個列。是對的嗎?或者應該是 255,0,0 \ n 255,0,0 \ n 等 – 2012-07-24 02:23:55

回答

0

XML並不是真正的基於行和列的格式,如csv;它是分層的,可能不是存儲行/列數據的最佳格式。您需要使用標籤來指定行和列,如果您將其導入到另一個應用程序中,則需要知道行和列標籤是否正確解析它。

第二個應用程序是用python編寫的嗎?如果是這樣,只需使用python pickle模塊來序列化你的二維python列表。這樣,您的第二個應用程序就可以將其作爲二維列表重新讀取,而不是將其來回編組爲csv或xml。

+0

我不確定其他應用程序的寫入情況。基本上,我正在爲其他基於Windows的程序創建值來導入。我上面的示例數據只有60個值。 「現實生活」的應用程序將有更多的信息來操縱(以數千計)。 – 2012-07-24 15:06:07

0

你最後的解決方案應該工作得很好。你得到了什麼錯誤?

要轉換爲xml,您可以簡單地爲每個「行」創建一個字典,並使用下面列出的解決方案之一:Serialize Python dictionary to XML

+0

我沒有收到錯誤。數據仍然沒有以我需要的方式保存。我想知道我是否需要創建一本字典。我可以嘗試一下,看看會發生什麼 – 2012-07-24 14:35:09