unb-mds / 2023.2_DeOlhoRS

Projeto de Coleta e Análise de Diários Oficiais Municipais
https://de-olho-rs-teste-my-team-1c098159.vercel.app/
MIT License
9 stars 4 forks source link

Treinamento sobre Parser (Duo) #7

Closed BrunoHDuarte2 closed 1 year ago

BrunoHDuarte2 commented 1 year ago

Tema: Parser

Participantes:

BiancaPatrocinio7 commented 1 year ago

Parser

É possível fazer isso usando puro Python, sem importar nenhum módulo. Basicamente é um exercício de manipulação de string's. Certamente que há formas mais eficientes de fazer o mesmo, como por exemplo, usando o referido re (módulo que lida com regex, regular expressions). Continuando com o puro Python, os passos gerais são:

Identificar o formato do ficheiro

Vamos a isso.

  1. Identificar o formato do ficheiro Vendo o ficheiro de exemplo, identificamos o seguinte: comentários começam por # grupos acabam em : parâmetros e valores estão separados por = há parâmetros sem grupo, que aparecem primeiro assumimos que todos os parâmetros seguintes pertencem a algum grupo Atenção: na linha 59 há um comentário que não está identificado: Game Label Image; eu coloquei um #, mas é possível lidar com estas situações no código

  2. Definir uma estrutura de dados onde guardar a informação Como temos parâmetros separados por grupos, neste exemplo decidi por uma estrutura do tipo dicionário de dicionários. Exemplo cfg = { 'grupo 1': { 'param1': 1, 'param2': 'abc' }, 'grupo 2': { 'paramA': 'foo', 'paramB': 123 } }

Um dos grupos vai ser o 'geral', que contém os parâmetros que surgem primeiro, fora de qualquer grupo.

  1. Escrever ficheiro ou converter Não vou cobrir esta parte na minha resposta, já que o pretendido é converter para XML, e isso já foge à pergunta principal (como criar o parser). Aconselho a leitura do seguinte tópico: XML to/from a Python dictionary.