Skip to content

Commit

Permalink
🆒(#80): Teste da escrita no arquivo json na extração de dados com o r…
Browse files Browse the repository at this point in the history
…egex
  • Loading branch information
BrunoHDuarte2 committed Dec 2, 2023
1 parent 9c89883 commit cbf3bf9
Show file tree
Hide file tree
Showing 6 changed files with 48 additions and 18 deletions.
33 changes: 15 additions & 18 deletions Camada_Dados/Regex.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
import json
import os

class ExtratorDeDados:
class Extrator_de_dados:
def __init__(self):
self.nomeDosMunicipios = [
self.nome_dos_municipios = [
"Aceguá", "Água Santa", "Agudo", "Ajuricaba", "Alecrim", "Alegrete", "Alegria","Almirante Tamandaré do Sul", "Alpestre", "Alto Alegre", "Alto Feliz", "Alvorada", "Amaral Ferrador",
"Ametista do Sul", "André da Rocha", "Anta Gorda", "Antônio Prado", "Arambaré", "Araricá",
"Aratiba", "Arroio do Meio", "Arroio do Padre", "Arroio do Sal", "Arroio do Tigre",
Expand Down Expand Up @@ -86,27 +86,27 @@ def __init__(self):
"Vila Maria", "Vila Nova do Sul", "Vista Alegre", "Vista Alegre do Prata",
"Vista Gaúcha", "Vitória das Missões", "Westfália", "Xangri-lá"
]
def extrairNomeMunicipio(self, bloco):
def extrair_nome_municipio(self, bloco):
# Extrair nome do município com flexibilidade para padrões diferentes
padrao = re.compile(r'\b(?:' + '|'.join(map(re.escape, self.nomeDosMunicipios)) + r')\b(?! \w)', re.IGNORECASE)
textoSemDuploEspacamento = re.sub(r'\s+', ' ', bloco )
correspondencias = padrao.findall(textoSemDuploEspacamento)
padrao = re.compile(r'\b(?:' + '|'.join(map(re.escape, self.nome_dos_municipios)) + r')\b(?! \w)', re.IGNORECASE)
texto_sem_duplo_espacamento = re.sub(r'\s+', ' ', bloco )
correspondencias = padrao.findall(texto_sem_duplo_espacamento)
if correspondencias:
return correspondencias[0]
else:
return "Publicado por Gabinete ou afins"

def escrita_data_base(self, dados, arquivo):
print(arquivo)
with open(arquivo, "r", encoding="utf-8") as file:
dados_escritos = json.load(file)

dados_escritos.append(dados)
with open(arquivo, "w", encoding="utf-8") as file:
json.dump(dados_escritos, file, indent=4, ensure_ascii=False)

def extrairDados(self, nomeDoArquivo, arq_salvo):
with open(nomeDoArquivo, 'r') as arquivo:
def extrair_dados(self, nome_do_arquivo, arq_salvo):
with open(nome_do_arquivo, 'r') as arquivo:
texto = arquivo.read()
padrao = re.compile(r'(NOMEIA|EXONERA )', re.IGNORECASE)

Expand All @@ -125,7 +125,7 @@ def extrairDados(self, nomeDoArquivo, arq_salvo):
print("-----")"""

# Restante do seu código aqui
nomeDoMunicipio = self.extrairNomeMunicipio(contexto)
nome_do_municipio = self.extrair_nome_municipio(contexto)
data = arquivo.name
data = data[:-4]
data = data[-10:]
Expand All @@ -138,7 +138,7 @@ def extrairDados(self, nomeDoArquivo, arq_salvo):
exoneracao = True

dados_novos = {
"nomeMunicipio": nomeDoMunicipio,
"nomeMunicipio": nome_do_municipio,
"dataPost": data,
"haNomeacao": nomeacao,
"haExoneracao": exoneracao,
Expand All @@ -147,16 +147,13 @@ def extrairDados(self, nomeDoArquivo, arq_salvo):
}
self.escrita_data_base(dados_novos, arq_salvo)

def extraiGeral(self, ano_extraido, arq_salvo):
def extrai_geral(self, ano_extraido, arq_salvo):
diretorio_atual = os.path.dirname(os.path.abspath(__file__))
arquivos = os.listdir(f'{diretorio_atual}/txt/{ano_extraido}/')
for arq in arquivos:
arqPath = f'{diretorio_atual}/txt/{ano_extraido}/{arq}'
self.extrairDados(arqPath, arq_salvo)
"""
regex = ExtratorDeDados()
regex.extraiGeral(2013, "arquivo")
"""
arq_path = f'{diretorio_atual}/txt/{ano_extraido}/{arq}'
self.extrair_dados(arq_path, arq_salvo)




Binary file added Camada_Dados/__pycache__/Regex.cpython-310.pyc
Binary file not shown.
Binary file modified Camada_Dados/__pycache__/WebScraper.cpython-310.pyc
Binary file not shown.
Binary file not shown.
Binary file modified Testes/__pycache__/test_WebScraper.cpython-310-pytest-7.4.3.pyc
Binary file not shown.
33 changes: 33 additions & 0 deletions Testes/test_Regex.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import unittest
import os
import json
from Camada_Dados.Regex import Extrator_de_dados

class Test_extrator_de_dados(unittest.TestCase):
def setUp(self):
self.extrator = Extrator_de_dados()

def test_escrita_database(self):
# Criação do arquivo temporario na pasta geral do projeto
diretorio_atual = os.path.dirname(os.path.abspath(__file__))
caminho_atual = os.path.abspath(os.path.join(diretorio_atual, '..'))
open(f'{caminho_atual}/testeRegex.json', 'w').close()
with open(f'{caminho_atual}/testeRegex.json', 'w') as file:
file.write("[\n\n]")

dados_ficticios = {
"nomeMunicipio": "nome_ficticio",
"dataPost": "data_ficticia",
"haNomeacao": "nomeacao_ficticia",
"haExoneracao": "exoneracao_ficticia",
}
self.extrator.escrita_data_base(dados_ficticios, f'{caminho_atual}/testeRegex.json')


with open(f'{caminho_atual}/testeRegex.json', 'r') as arquivo:
dados_lidos = json.load(arquivo)

self.assertEqual(dados_lidos[0], dados_ficticios)
os.remove(f'{caminho_atual}/testeRegex.json')
if __name__ == '__main__':
unittest.main()

0 comments on commit cbf3bf9

Please sign in to comment.