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,