Ir para conteúdo
  • 0

Recebimento de um arquivo .txt


Paulo Cesar

Pergunta

  • Alunos
Postado (editado)

Prezados, bom dia!

Preciso de uma ajuda em relação ao recebimento de um arquivo . Coloquei nesse tópico porque não encontrei outro, na verdade seria transformar o arquivo em uma tabela excel. Pelo que vi seria um arquivo recebido no formato ( RDN ) receberiamos nesse formato mais para transformar em uma tabela. 

Alguém teria uma solução a respeito?

image.png.380f1870da70474956b88f7355416764.png

Colhi mais informações a respeito desse modelo:

O formato ITP é um formato padrão usado para trocar informações entre empresas. Ele é usado para enviar e receber pedidos, remessas, faturas e outros documentos comerciais.

O formato ITP é composto por vários segmentos, cada um com um propósito específico. O segmento ITP é o segmento principal do formato e contém informações sobre o transmissor, o receptor e o pedido.

Na imagem que você enviou, o segmento ITP está localizado no cabeçalho do documento. Ele contém as seguintes informações:

  • CNPJ do transmissor: 89674782001391
  • CNPJ do receptor: 33656729000170
  • Número do pedido: 211129
  • Data do pedido: 2004-08-29

O segmento ITP é seguido por outros segmentos que contêm informações adicionais sobre o pedido, como os itens do pedido, as quantidades e os preços.

O formato ITP é um formato bem estruturado e fácil de usar. É um formato padrão usado por muitas empresas, o que facilita a troca de informações comerciais.

Aqui está uma tabela que resume os principais segmentos do formato ITP:

Segmento Descrição
ITP Informações sobre o transmissor, o receptor e o pedido
PP Informações sobre o item do pedido
AE Informações sobre a entrega do item do pedido
TEIAS Informações sobre as datas e quantidades do pedido
PP2 Informações adicionais sobre o item do pedido
Editado por Paulo Cesar
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos

Boa tarde!

Pensando em algoritmo, você teria que:

  1. Ler o arquivo dentro do python
  2. Passar por cada linha para identificar se as iniciais começam com ITP,PP,AE,TEIAS e PP2
  3. Encontrado a linha específica, você precisa navegar pela posição dos dados para pegar cnpj, datas, enderenço (no caso do registro ITP) e armazenar em um dataframe
  4. Após você ter todo o dataframe populado, exportar para o excel.

 

Veja um pequeno exemplo de um arquivo Sintegra: As iniciais de cada linha (registros), assim como no seu arquivo, há significados.

  • Registro 10: Dados do estabelecimento
  • Registro 11: Informações complementares do estabelecimento (endereço e contato)
  • Registro 50: Notas fiscais 

 

Os dados nas linhas são separadas por posição, com a mesma ideia a qual você passou. Para testarmos, suponhamos que eu queira exportar para excel o nome e cnpj da empresa. Ficaria mais ou menos assim:

import pandas as pd

# Lê apenas a primeira linha do arquivo
with open("./SINTEGRA-04-2020.TXT", "r", encoding='LATIN1') as arquivo:
    primeira_linha = arquivo.readline()

# Verifica se a primeira linha começa com "10"
if primeira_linha.startswith('10'):
    # Cria um DataFrame vazio com a coluna "CNPJ" e 'NOME'
    df = pd.DataFrame(columns=['CNPJ'])
    df = pd.DataFrame(columns=['NOME'])
    # Extrai o CNPJ da primeira linha
    cnpj = primeira_linha[2:16]    
    df['CNPJ'] = [cnpj]
    nome=primeira_linha[30:65]
    df['NOME']=nome


df.to_excel("meu_dataframe.xlsx", index=False)
print(df)

O CNPJ possui 14 posições, mas é preciso ignorar as 2 posições iniciais, pois se trata do registro 10.
O nome, possui 35 posições. Sendo assim, eu vou ignorar as 30 anteriores e pegar até a posição 65.

 

Importante: O comando acima está lendo apenas uma única linha -readline(). 

No seu caso, eu usaria o readlines(), que leria o conteúdo de todo o arquivo.

Se você for fazer usando python , uma  boa pegada seria fazer uma função para dada registro segmento, no seu caso). Creio que faria o problema ficar mais "quebrado", facilitando a solução.

 

Sintegra.png

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
1 hora atrás, jemerson disse:

Boa tarde!

Pensando em algoritmo, você teria que:

  1. Ler o arquivo dentro do python
  2. Passar por cada linha para identificar se as iniciais começam com ITP,PP,AE,TEIAS e PP2
  3. Encontrado a linha específica, você precisa navegar pela posição dos dados para pegar cnpj, datas, enderenço (no caso do registro ITP) e armazenar em um dataframe
  4. Após você ter todo o dataframe populado, exportar para o excel.

 

Veja um pequeno exemplo de um arquivo Sintegra: As iniciais de cada linha (registros), assim como no seu arquivo, há significados.

  • Registro 10: Dados do estabelecimento
  • Registro 11: Informações complementares do estabelecimento (endereço e contato)
  • Registro 50: Notas fiscais 

 

Os dados nas linhas são separadas por posição, com a mesma ideia a qual você passou. Para testarmos, suponhamos que eu queira exportar para excel o nome e cnpj da empresa. Ficaria mais ou menos assim:

import pandas as pd

# Lê apenas a primeira linha do arquivo
with open("./SINTEGRA-04-2020.TXT", "r", encoding='LATIN1') as arquivo:
    primeira_linha = arquivo.readline()

# Verifica se a primeira linha começa com "10"
if primeira_linha.startswith('10'):
    # Cria um DataFrame vazio com a coluna "CNPJ" e 'NOME'
    df = pd.DataFrame(columns=['CNPJ'])
    df = pd.DataFrame(columns=['NOME'])
    # Extrai o CNPJ da primeira linha
    cnpj = primeira_linha[2:16]    
    df['CNPJ'] = [cnpj]
    nome=primeira_linha[30:65]
    df['NOME']=nome


df.to_excel("meu_dataframe.xlsx", index=False)
print(df)

O CNPJ possui 14 posições, mas é preciso ignorar as 2 posições iniciais, pois se trata do registro 10.
O nome, possui 35 posições. Sendo assim, eu vou ignorar as 30 anteriores e pegar até a posição 65.

 

Importante: O comando acima está lendo apenas uma única linha -readline(). 

No seu caso, eu usaria o readlines(), que leria o conteúdo de todo o arquivo.

Se você for fazer usando python , uma  boa pegada seria fazer uma função para dada registro segmento, no seu caso). Creio que faria o problema ficar mais "quebrado", facilitando a solução.

 

Sintegra.png

@jemersonboa tarde!

grato pelo retorno, o arquivo seria nesse formato acredito que viria, mais não tenho muito conhecimento em Python.

image.png.741c930860ea7a92f842632acca61f0a.png

Link para o comentário
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
×
×
  • Criar Novo...