2011-11-19 89 views
0

我想製作一個命令行程序,希望可以在Windows和Linux上工作。我想使用Python,因爲它是我選擇的編程語言。目標是讓程序以文件名作爲參數,並以不同格式輸出文件中的信息。在這種情況下,XML - > CSV和CSV - > XML。XML CSV與Python轉換

這樣做的最好方法是什麼?

我知道Python中有XML和CSV解析器,如xml.parsers.expatcsv庫。我希望程序是健壯的,以便它可以輸出其他格式,如.sql或其他格式。首先將數據轉換爲標準格式會有好處嗎?像JSON一樣?然後可以將輸出文件製作成必要的其他格式。

謝謝。

編輯::

<level1 id ='' attr1='' attr2=''> 
    <level2 id ='' attr1='' attr2=''> 
     <type1 id ='' attr1='' attr2=''> 
     </type1> 
     <type2 id ='' attr1='' attr2=''> 
     </type2> 
    </level2> 
    <level2 id ='' attr1='' attr2=''> 
     <type2 id ='' attr1='' attr2=''> 
     </type2> 
    </level2> 
</level1> 

這是XML格式。注意level2中的type1和type2。現在我應該如何在csv中逐行表示這一行?

編輯#2:

我想這個問題歸結爲一個樹狀的數據結構和網格結構之間進行轉換的標準方法。我最終在python中創建了一個嵌套列表,例如JSON,但沒有使用JSON結構。我想知道是否有一個好的算法來進行這種轉換?

+0

XML是一種非常靈活的格式,所以如何做到這一點取決於您的XML格式以及您想要的信息。 –

+1

您應該更清楚地說明您希望處理的文件類型。例如:XML用於表示樹,而CSV表...您的文件是否將包含具有相同長度分支的樹或...? – mac

+0

是的csv和xml文件之間的差異使它有點棘手。 xml文件是樹形格式的,請參閱我上面編輯的xml和csv格式。 –

回答

1

你會更好過將XML轉換成JSON和背部。這兩種格式都支持多層嵌套。相比之下,CSV適用於沒有附加嵌套的行列表。

+0

是的,這就是我的想法。那麼沒有任何一種可接受的格式將csv中的嵌套樹保存爲XML? –

+0

@jeffery_the_wind不需要,您需要決定如何自己平鋪信息。 –

+0

這就是我所做的,基於每個項目。我認爲,對於一個通用的解決方案,您可以使用網格格式條目的唯一性來填充樹。網格中的唯一值組可以是樹的分支。 –

0

您應該將數據轉換爲標準的python字典,然後從那裏轉換爲您需要的任何格式。

當然,以XML轉換爲CSV,你應該有特殊格式的XML,像

<root> 
    <column1>value</column1> 
    <column2>value</column2> 
    <column3>value</column3> 
</root>