Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Leitura de arquivo tabulado

Amigos,

Eu consigo ler esse tipo de arquivo no pandas?

SISTEMA [MA_16_0001_DB_0001] 
Movimentação Financeira (apoio às Grandes Construtoras, para importação em sistemas de TI (DATABASE e SAP)
Programador: William  (para uso na CONSTRUCAO CIVIL) .
Superintendente: Alexandre- dúvidas: sge3599sp

 Contrato      Dt.Lancto. Dt. Remes.  Lancamentos                           NP
                  Conta SIDEC/NSGD              Valor  Situacao            Mot.

 855554002817  25/07/2019 25/07/2019  400-CRE BLOQUEADO -  15-TERRENO       10
               49921.003.00000680.7           6.715,82 Sem Retorno          01
 855554002817  25/07/2019 25/07/2019  400-CRE BLOQUEADO -  15-FINANCIAM     10
               49921.003.00000680.7          94.734,81 Sem Retorno          01

 Total Dt.Rem  25/07/2019  CL=400/TP=15               101.450,63


 Totais                    CL=400/TP=15               101.450,63

Obrigado pela ajuda!

2 respostas
solução!

Para quem quiser... Aqui esta a solução:

https://colab.research.google.com/drive/1XT14vY-0ntnZ5WRbvC78HymEOZ5cDg6A

Olá Emerson, obrigado por compartilhar a solução!

A maior dificuldade nesse cenário é a falta de um separador único entre os dados, caso contrário algo mais simples como um regex já resolveria tudo:

from io import StringIO

# Dados modificados para seguir um padrão de pelo menos dois espaços entre cada coluna
aaa = StringIO("""
Contrato      Dt.Lancto.  Dt.Remes.  Lancamentos                           NP   Conta SIDEC/NSGD              Valor  Situacao            Mot.

 855554002817  25/07/2019  25/07/2019  400-CRE BLOQUEADO - 15-TERRENO       10  49921.003.00000680.7           6.715,82  Sem Retorno          01
 855554002817  25/07/2019  25/07/2019  400-CRE BLOQUEADO - 15-FINANCIAM     10  49921.003.00000680.7          94.734,81  Sem Retorno          01
""")

df = pd.read_table(aaa, sep='\s\s+', engine='python')
df

Vou marcar sua resposta como solução para ajudar alguém com uma dúvida parecida a encontrar essa resposta.