2
I have two scripts files, one to access a CSV file, turn each row into a dictionary and return a list of dictionaries (lines).
My second script is a function to create a new column in the file (C1), copy the data from another column (C2) to this new one (C1) and delete the old column (C2). The purpose of this is to change the name of columns in the CSV file by creating copies with different names, but to change these I must call the same function several times only by changing the parameters that are the old and new names used. How can I do this without having to call the function all the time?
File 1: acessar_csv
import unicodecsv
def ler_csv(arquivo):
with open(arquivo, 'rb') as dados:
dicionario = unicodecsv.DictReader(dados)
return list(dicionario)
inscricoes = ler_csv('inscriçoes.csv')
envolvimento_diario = ler_csv('envolvimento_diario.csv')
submissoes_de_projetos = ler_csv('submissoes_de_projetos.csv')
File 2: change name
from acessar_csv import envolvimento_diario, inscricoes, submissoes_de_projetos
# Alterar nome das colunas de inglês para português
def alterar_nome(arquivo, colunaIngles, colunaPortugues): # Função para alterar nome das colunas, recebendo como argumentos o arquivo que será alterado, o nome da coluna em Inglês (atual) e o novo nome em português
for coluna in arquivo:
coluna[colunaPortugues] = coluna[colunaIngles] # Cria uma nova coluna (colunaPortugues) cujos valores são iguais ao da colunaIngles
del[coluna[colunaIngles]] # Deleta a colunaIngles
# Chamada de função para alterar o nome das colunas do arquivo envolvimento_diario
alterar_nome(envolvimento_diario, 'acct', 'id_conta')
alterar_nome(envolvimento_diario, 'utc_date', 'data_coleta_dados')
alterar_nome(envolvimento_diario, 'num_courses_visited', 'num_cursos_visitados')
alterar_nome(envolvimento_diario, 'total_minutes_visited', 'total_minutos_visitados')
alterar_nome(envolvimento_diario, 'lessons_completed', 'lições_completadas')
alterar_nome(envolvimento_diario, 'projects_completed', 'projetos_completos')
# Chamada de função para alterar o nome das colunas do arquivo inscricoes
alterar_nome(inscricoes, 'account_key', 'id_conta')
alterar_nome(inscricoes, 'status', 'status_inscrição')
alterar_nome(inscricoes, 'join_date', 'data_inscrição_curso')
alterar_nome(inscricoes, 'cancel_date', 'data_cancelamento_inscrição')
alterar_nome(inscricoes, 'days_to_cancel', 'dias_até_cancelamento')
alterar_nome(inscricoes, 'is_udacity', 'conta_teste')
alterar_nome(inscricoes, 'is_canceled', 'cancelamento_data_coleta_dados')
# Chamada de função para alterar o nome das colunas do arquivo submissoes_de_projetos
alterar_nome(submissoes_de_projetos, 'creation_date', 'data_submissão_projeto')
alterar_nome(submissoes_de_projetos, 'completion_date', 'data_avaliação_projeto')
alterar_nome(submissoes_de_projetos, 'assigned_rating', 'status_avaliação_projeto')
alterar_nome(submissoes_de_projetos, 'account_key', 'id_conta')
alterar_nome(submissoes_de_projetos, 'lesson_key', 'id_projeto')
alterar_nome(submissoes_de_projetos, 'processing_state', 'status_processo_avaliação')
print (envolvimento_diario[0])
print (inscricoes[0])
print (submissoes_de_projetos[0])
I tried to do this with a dictionary as in the following question, but I could not: Error: unhashable type: dict_keys, how to resolve?
Thank you!
Hi, sorry to ask, this may sound silly but I’m new to programming. This is more or less what I tried to do in this code: https://answall.com/questions/258274/erro-unhashable-type-dict-keys-howto resolve/ ? If yes, what should I change?
– Cristhian Miguel
If it looks like this, it can show the first five lines of the CSV file?
– Kleber Silva
Hello, of course! I got the top 10: https://imgur.com/a/Lssx0 This is the wrapped file
– Cristhian Miguel
Cristhian Miguel, here is the code that translates the columns of the CSV file, now just put in methods as you need, or turn into a script that you call from the command line and pass parameters. It all depends on the need. I hope I helped. Hug.
– Kleber Silva
Thank you very much, really helped!
– Cristhian Miguel
I’m glad it worked. Don’t forget to upvote on the answer. Hug.
– Kleber Silva
Of course, it’s done!
– Cristhian Miguel
I also added the code to Github for future references. https://github.com/klebercsilva/csv_headers_translator
– Kleber Silva