2017-01-10 2 views
2

meteo 데이터가 들어있는 XML 파일을 구문 분석하고 csv 파일에 값을 쓰려고합니다. 이 코드는 우아하지만 잘 작동하는지 잘 모르겠습니다.parse 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

대단히 감사합니다. 나는 약간의 코드를 수정하여 올바른 탭을 만들었습니다. f.write ('STAZIONE IDSTAZ SENSORE ISTANTE \ n') –

+0

아무런 문제가 없었습니다. – Shijo