Skip to content

Instantly share code, notes, and snippets.

@pmarkun
Created February 4, 2021 17:26
Show Gist options
  • Save pmarkun/3ea9330053a7996d229f546794fc1429 to your computer and use it in GitHub Desktop.
Save pmarkun/3ea9330053a7996d229f546794fc1429 to your computer and use it in GitHub Desktop.
despesas.py
# References
# https://www.al.sp.gov.br/repositorioDados/docs/deputados/despesas_gabinetes.pdf
# https://medium.com/analytics-vidhya/converting-xml-data-to-csv-format-using-python-3ea09fa18d38
# Importa a função ElementTree da lib XML que processa XML
from xml.etree import ElementTree
# Importa a lib que salva CSV
import csv
# Abre o arquivo XML
caminho = '/caminho/para/despesas_gabinetes.xml'
with open(caminho, 'r') as arquivo:
# Transforma o XML em um objeto pythonico
tree = ElementTree.parse(arquivo)
# Cria uma lista para armazenar as despesas
despesas = []
# Itera entre todas os itens <despesa> no arquivo.
for d in tree.findall(".//despesa"):
despesa = {} #cria um dicionario para armazenar os dados
for item in d.iter(): #itera entre todos os itens dentro de uma <despesa>
despesa[item.tag] = item.text #cria uma entra no dicionario
despesas.append(despesa) #Adiciona o item ao dicionario
# Abre um arquivo para gravar os resultados
caminho_arquivo_final = '/caminho/para/despesas_gabinetes.csv'
with open(caminho_arquivo_final, 'w') as final:
f = csv.DictWriter(final, fieldnames=despesas[0].keys()) # Cria o objeto DictWriter e passa os campos da primeira linha como cabeçalho
f.writeheader() #escreve cabeçalho
f.writerows(despesas) #escreve todos os itens da lista
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment