2017-03-10 18 views
0

私は今バージョン2.6.4でPythonを学んでいます。 まず、属性(orderno)の値だけを解析してそれらを出力しようとしています。 2番目に、XMLを解析し、属性 "orderno"から10238のような属性の値を見つけようとしていますが、 "10238,1、Hasselblad 501 CM body、2355"のようなcsv行として出力します。 それを行う方法についてのポインタ?Python XML to csv

from xml.etree import ElementTree 
tree = ElementTree.parse('sample.xml') 
root = tree.getroot() 

for item in root: 
    first = item.find('orderno').text 
    print first 

データ:

<item> 
<orderno>10238</orderno> 
<count>1</count> 
<name>Hasselblad 501 CM body</name> 
<price>2355</price> 
</item> 
<item> 
<orderno>20032</orderno> 
<count>1</count> 
<name>Carl Zeiss Planar Lens CB 2.8/80 mm</name> 
<price>1233</price> 
</item> 
<item> 
<orderno>30212</orderno> 
<count>1</count> 
<name>Roll Film 120 Magazine A12</name> 
<price>917</price> 
</item> 
+0

データに「」というタグ –

+0

があったほうが簡単です。私は、sample.xmlに編集しました。 – dermont

+0

これはpythonのであればええと、それは、コードのインデントの深刻な必要性にあります、現在の1は、ちょうど私のコメントには影響しませんあなたのXMLは変更されませんでした – Zharf

答えて

1

あなたは基本的にすべてのサブ要素を反復処理する必要があります。 は、ここで私はリスト内包を通じてサブ項目を反復し、コンマでリストに参加しました!

from xml.etree import ElementTree 
tree = ElementTree.parse('sample.xml') 
root = tree.getroot() 

for item in root: 
    print ','.join([sub_item.text for sub_item in item]) 

サンプル出力:

10238,1,Hasselblad 501 CM body,2355 
20032,1,Carl Zeiss Planar Lens CB 2.8/80 mm,1233 
30212,1,Roll Film 120 Magazine A12,917 

それが役に立てば幸い!

+0

それを試してみてください! – dermont