2011-11-19 86 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>