Skip to content

Instantly share code, notes, and snippets.

@voigtjessica
Last active January 20, 2021 20:30
Show Gist options
  • Save voigtjessica/548794b15231e55b030d681bf0d07a83 to your computer and use it in GitHub Desktop.
Save voigtjessica/548794b15231e55b030d681bf0d07a83 to your computer and use it in GitHub Desktop.
# 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