2017-01-10 6 views
2

私はmeteoデータを含むXMLファイルを解析し、csvファイルに値を書き込もうとしています。 このコードがエレガントであるかどうかはわかりませんが、うまくいきます。xmlを解析してヘッダ列を持つcsvを作成する

from qgis.PyQt.QtCore import * 
import requests 
import xml.etree.ElementTree as ET 
# url of xml to parse 
baseUrl = ('http://www.arpa.veneto.it/bollettini/meteo/h24/img08/0144.xml') 
resp = requests.get(baseUrl) 
msg = resp.content 
tree = ET.fromstring(msg) 
for stazione in tree.iter('STAZIONE'): 
    idstaz= stazione.find('IDSTAZ').text 
    for sensore in stazione.iter('SENSORE'): 
     id= sensore.find('ID').text 
     for dati in sensore.iter('DATI'): 
     ist = dati.get('ISTANTE') 
     vm = dati.find('VM').text 
     f = open('D:/GIS/_Temp/result.csv', 'a') 
     print >> f, idstaz, id, ist, vm 
     f.close() 

私はこのコードがエレガントであるとは確信していませんが、動作します。

144 300000864 201701080100 -4.2 
144 300000864 201701080200 -4.5 
144 300000864 201701080300 -4.8 
144 300000864 201701080400 -5.5 
... 

ただし、ヘッダーを列に追加する方法はわかりません。

+0

@Mortファイルにヘッダを追加します。改訂ありがとうございました –

答えて

1

開くためのループ前のファイルと

from qgis.PyQt.QtCore import * 
import requests 
import xml.etree.ElementTree as ET 
# url of xml to parse 
baseUrl = ('http://www.arpa.veneto.it/bollettini/meteo/h24/img08/0144.xml') 
resp = requests.get(baseUrl) 
msg = resp.content 
tree = ET.fromstring(msg) 
f = open('D:/GIS/_Temp/result.cvs', 'a') 
f.write('STAZIONE,IDSTAZ,SENSORE,ISTANTE') 
for stazione in tree.iter('STAZIONE'): 
    idstaz= stazione.find('IDSTAZ').text 
    for sensore in stazione.iter('SENSORE'): 
     id= sensore.find('ID').text 
     for dati in sensore.iter('DATI'): 
     ist = dati.get('ISTANTE') 
     vm = dati.find('VM').text 

     print >> f, idstaz, id, ist, vm 

f.close() 
+0

ありがとうございます@Shijo。私はちょっとしたコードを変更して正しいタブ 'f.write( 'STAZIONE IDSTAZ SENSORE ISTANTE \ n')' –

+0

を問題なく使用しました。 – Shijo

関連する問題