0
respostas

É possível criar uma planilha .csv (ou excell) onde os dados numéricos estão com " , " ao invés de " . " como separador numérico?

Prezados, boa tarde,

Escrevi o código abaixo para praticar a escrita de dados, onde o objetivo é receber um arquivo txt pegar os dados e fazer algumas operações. Porém quando eu tento transformar os números com "." eu "," o arquivo se desarruma como um todo. Código:

import csv
nome_arquivo = 'entrada.txt'
endereco = f'C:/Users/Diogo/Documents/GitHub/Portifolio/exercicio com arquivos/{nome_arquivo}'
with open(endereco,encoding='latin-1', mode='r') as arquivo:
    arquivo.seek(0)
    lista = arquivo.readlines()
    limpa = []
    for dados in lista:
        limpa.append(dados.rsplit(" ", 1))

numeros = []
nomes = []
total_numeros = 0
for contador in range(0, len(limpa)):
    numeros.append(float(limpa[contador][1]))
    total_numeros = total_numeros + float(limpa[contador][1])
    nomes.append(limpa[contador][0])

percentual = []
media_ocupacao = round(total_numeros / len(numeros), 2)
for valor in range(0, len(numeros)):
    percentual.append(round((numeros[valor] * 100 / total_numeros), 2))

cabecalho = ['ACME Inc.;Uso do espaço em disco pelos usuários']
separador = [' ']
colunas = ['Nr.Usuário;Espaço utilizado (MB);% do uso']

nome_arquivo = 'saida_teste_2.csv'
endereco = f'C:/Users/Diogo/Documents/GitHub/Portifolio/exercicio com arquivos/{nome_arquivo}'
with open(endereco,encoding='latin-1', mode='w+', newline='') as arquivo_2:
    arquivo_2.seek(0)
    x = csv.writer(arquivo_2)
    x.writerow(cabecalho)
    x.writerow(separador)
    x.writerow(colunas)

    for y in range(0, len(nomes)):
        linhas = ['{};{:7.2f};{:7.2f}'.format(nomes[y],numeros[y]/1000000,percentual[y])]
        #linhas = ['{};{:7.2f};{:7.2f}'.format(nomes[y],numeros[y]/1000000,percentual[y]).replace(',','.')]
        x.writerow(linhas)
    x.writerow(['Espaço total ocupado (MB):;{:7.2f}'.format(total_numeros / 1000000)])
    x.writerow(['Espaço médio ocupado (MB):;{:.2f}'.format(media_ocupacao/1000000)])

Independentemente de utilizar o método ".replace" ou colocar mais variáveis e fazer a transformação manualmente, o arquivo sempre sai desalinhado se tiver vígulas, se ele não as tem (como o exemplo do código acima) ele sai formato desejado, porém sai com "." no lugar de ",". Existe uma forma da planilha em csv sair com as vírgulas como numeral? Abaixo segue os dados utilizados, porém como sabem, vocês podem utilizar quais outros que mantem esse padrão ai:

alexandre       456123789
anderson        1245698456
antonio         123456456
carlos          91257581
cesar           987458
rosemary        789456125

Desde já agradeço a ajuda e o tempo de vocês.

Abraços,