Last active
January 20, 2021 20:30
-
-
Save voigtjessica/548794b15231e55b030d681bf0d07a83 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Bibliotecas necessárias: | |
import pdfminer | |
from pdfminer.high_level import extract_text | |
import re | |
import numpy as np | |
import pandas as pd | |
# Transformando a minha lei em uma STRING | |
lai = extract_text('lai.pdf') | |
# Evitando espaços duplos, para não haver problema nos splits mais pra frente: | |
lai = re.sub(r' ', ' ', lai) | |
# Criando uma lista com todos os artigos separados: | |
lai_art = re.split(r'\n\nArt. ', lai) | |
# Rotina para criar dois dfs: um dos caputs e outro dos parágrafos: | |
caput = pd.DataFrame({'conteudo': [], | |
'tipo': [], | |
'artigo_referencia': [] }) | |
par = pd.DataFrame({'conteudo': [], | |
'tipo': [], | |
'artigo_referencia': [], | |
'paragrafo_referencia': []}) | |
for n in range(len(lai_art)): | |
i = lai_art[n] | |
a = i[0:5] | |
a = re.sub(r'[^0-9]+', '', a) | |
if "\n\nParágrafo único" in i: | |
i = pd.DataFrame({'conteudo': re.split("\n\nParágrafo único", i)}) | |
i['paragrafo_referencia'] = 'paragrafo unico' | |
else: | |
i = pd.DataFrame({'conteudo': re.split("\n\n§", i)}) | |
i['paragrafo_referencia'] = i['conteudo'].astype(str).str[0:4] | |
i['paragrafo_referencia'] = i['paragrafo_referencia'].str.replace(r'[^0-9]+', '') | |
i['artigo_referencia'] = a | |
c = i[0:1] # Caputs | |
c['tipo'] = 'caput' | |
c['paragrafo_referencia'] = np.nan | |
p = i[1:] # Parágrafos | |
p['tipo'] = 'paragrafo' | |
caput = pd.concat([caput , c], axis = 0, sort=False) | |
par = pd.concat([par , p], axis = 0, sort=False) | |
# Retirando o preâmbulo e outras coisas que vêm antes do conteúdo: | |
caput = caput[1:] | |
#juntando os dfs: | |
lai_df = pd.concat([par , caput], axis = 0, sort=False) | |
# retirando quebras de linha dupla, quebras de linha e whitespaces duplicados: | |
lai_df['conteudo'] = lai_df['conteudo'].str.replace(r'\n\n', ' ') | |
lai_df['conteudo'] = lai_df['conteudo'].str.replace(r'\n', ' ') | |
# Limpando início do conteúdo da lei | |
lai_df['conteudo'] = lai_df['conteudo'].str.replace(r'^[^a-zA-Z]+', ' ') | |
# Ressetando o index | |
lai_df = lai_df.reset_index(drop=True, inplace=False) | |
# Setando a IDE para exibir todas as linhas do DF | |
pd.set_option('display.max_rows', None) | |
lai_df |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment