Boa tarde!
Pensando em algoritmo, você teria que:
Ler o arquivo dentro do python
Passar por cada linha para identificar se as iniciais começam com ITP,PP,AE,TEIAS e PP2
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
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.