#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Fri Oct 18 15:58:43 2024

@author: ojacques
"""
bu=open('o00452ms9073500180108-imgbu.dat','rb')
#A letra Ã (code 195 / 0xC3) em ISO-8859-1 é o byte único 0xC3, mas em UTF-8 vira a sequência 0xC3 0x83.
#Nesse caso, temos que verificar o modo de leitura que queremos

#Lê todas as linhas como iso-8859-1 (Latin-1)
linhas=[l.decode('iso-8859-1') for l in bu.readlines()]

#Encontra a primeira linha que começa com 'Tribunal Regional Eleitoral'
inicio=[i for i,st in enumerate(linhas) if 'Tribunal Regional Eleitoral' in st][0]
linhas[inicio]='Tribunal Regional Eleitoral\n'

#Índice da penúltima linha com  ======================================
fim=[i for i,st in enumerate(linhas) if '======================================\n' in st][-2]

# Caracteres de controle. Aqueles caracteres que aparecem às vezes em um quadradinho 
# com 00 em cima e outro número embaixo
codProbs = set(range(0x0000, 0x0015 + 1)) #talvez ampliar para 0x001f, ver tabela ascii
# 9 (Tab), 10 (Line Feed / \n), 13 (Carriage Return / \r)
excecoes = {9, 10, 13}
codigosRemover = codProbs - excecoes

#Cria o arquivo BU.txt e grava todo o BU
with open('BU.txt','w') as butext:
    for l in linhas[inicio:fim+1]:
        l="".join(char for char in l if ord(char) not in codigosRemover)
        butext.write(l)   