Ir para conteúdo

jemerson

Alunos
  • Total de itens

    4
  • Registro em

  • Última visita

Perfil

  • Interesse em receber propostas de empresas
    Sim
  • Eu trabalho ...
    Em uma empresa

Informações adicionais

  • Sexo
    ♂ Masculino
  • Mora em
    ES
  • Nasceu dia
    20-10-1989

jemerson's Achievements

Aprendiz

Aprendiz (1/6)

1

Reputação

  1. Boa tarde! Esse fato está relacionado com a configuração de localidade do seu Power BI. Certamente o padrão deve está como Portuquês (Brasil). Para evitar esse tipo de perda ao ler no power bi, eu faço um replace diretamente no código python e troco o formato de ponto para vírgula. Assim o power bi já ler e identifica o campo como decimal , evitando de criar uma etapa de transformação e demais ajustes. Dá uma olhada no exemplo onde converto o texto numérico em float e em seguida troco o ponto por vírgula. import pandas as pd def converte_para_float(texto_numerico): try: # Tenta converter o texto numérico para float numero = float(texto_numerico) numero_formatado =f"{numero:.2f}".replace('.',',') return numero_formatado except ValueError: # Se ocorrer um erro na conversão, imprime uma mensagem de erro print("Erro: O texto fornecido não pode ser convertido em um número float.") return None # Exemplo de uso: texto1 = "123.45" texto2 = "987.65" texto3 = "abc" # Este texto não pode ser convertido em float lista=[] lista.append(converte_para_float(texto1)) lista.append(converte_para_float(texto2)) lista.append(converte_para_float(texto3)) dados=pd.DataFrame(lista,columns=['valor']) dados.to_csv('saida.csv',sep=';',index=False) Caso alguém tenha outra "luz", por favor, compartilhe conosco.
  2. 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.
  3. Na gravação, você pode colcoar o enconding="UTF-8", assim evita que o acento agudo na Olivia apareça caractere estranho. lista_nomes = ['Cleiton','Olívia','Meri'] with open('./lista_nomes.txt','w', encoding="UTF-8") as arquivo: for nomes in lista_nomes: arquivo.write(nomes + '\n') Agora na leitura, você pode fazer a mesma definição do encoding: Ex: with open ("./lista_nomes.txt","r",encoding="UTF-8") as arquivo: for a in arquivo: print(a)
×
×
  • Criar Novo...