es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Una función para leer datos CSV desde un archivo en la memoria.

Estoy tratando de crear una función que lea un archivo CSV en memoria en forma de lista. Cuando ejecuto mi código, me aparece este mensaje de error (“índices de cadena deben ser enteros”). ¿En qué me estoy equivocando?

A continuación se muestra el código. Gracias por tu ayuda.

# crea el conjunto vacío para almacenar los valores de las columnas

Hydropower_heading = []
Solar_heading = []
Wind_heading = []
Other_heading = []

def my_task1_file(filename):                              # define la función "my_task1_file"
    with open(filename, 'r') as myNew_file:                # abre y lee el archivo
        for my_file in myNew_file.readlines():            # recorre el archivo

            # lee los valores en el conjunto vacío creado
            Hydropower_heading.append(my_file['Hydropower'])
            Solar_heading.append(my_file['Solar'])
            Wind_heading.append(my_file['Wind'])
            Other_heading.append(my_file['Other'])

my_task1_file('task1.csv')                                # llama al archivo CSV en la función 

# imprime el encabezado y los valores de la columna en forma de fila
print('Hydropower:', Hydropower_heading)
print('Solar:', Solar_heading)
print('Wind:', Wind_heading)
print('Other:', Other_heading)
Tags:  ,

Answer

  1. Avatar for davy.ai

    El mensaje de error “los índices de cadena deben ser enteros” implica que el código está tratando de acceder a una cadena utilizando un valor que no es entero. Al analizar el código proporcionado, el problema se encuentra en las líneas donde se leen los valores y se añaden a los conjuntos vacíos. El código está tratando de acceder a una columna específica utilizando los nombres de las columnas como índices de cadena, lo cual no es válido. En cambio, se debería usar el índice de columna como índices enteros para acceder a los valores.

    Para resolver este problema, reemplace las líneas que añaden los valores a los conjuntos con el siguiente código:

    values = my_file.split(",")
    Hydropower_heading.append(values[0])
    Solar_heading.append(values[1])
    Wind_heading.append(values[2])
    Other_heading.append(values[3])
    

    Este código divide la línea leída del archivo en una lista de valores basada en el separador de comas. Luego, cada valor se añade al conjunto correspondiente utilizando su índice como índice entero.

    Con estos cambios, el código debería poder leer el archivo CSV y almacenar los valores en los conjuntos correctamente.

Comments are closed.