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.

Escribir en un archivo a partir de una lista de tuplas con cadenas de texto y números enteros.

Tengo una lista de tuplas

sortedlist = [('hello', 41), ('hi', 16), ('bye', 4)]

que quiero escribir en un archivo .txt de manera que la palabra y el número de cada tupla estén en la misma línea separados por una tabulación.
Es decir,

hello 41
hi 16
bye 4

Sé cómo escribir en el archivo así:

with open("output/test.txt", "w") as out_file:
for item in sortedlist:
out_file.write("Hello, world!" + "\n")

pero estoy teniendo dificultades para encontrar la manera correcta de recorrer mi lista y obtener la salida correcta.

He intentado lo siguiente:

with open("output/test.txt", "w") as out_file:
for i in sortedlist:
out_file.write((str(sortedlisti)) + str(sortedlisti))

pero obtengo:

TypeError: los índices de la lista deben ser enteros o rebanadas, no tuplas

¿Qué debería estar haciendo en su lugar?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para recorrer la lista de tuplas y escribir las palabras y los enteros en un archivo .txt separados por una pestaña en cada línea, puedes utilizar el siguiente código:

    sortedlist = [('hello', 41), ('hi', 16), ('bye', 4)]
    
    with open("output/test.txt", "w") as out_file:
        for item in sortedlist:
            out_file.write(f"{item[0]}\t{item[1]}\n")
    

    Aquí, estamos abriendo el archivo “output/test.txt” en modo de escritura (“w”) utilizando una declaración with, que cerrará automáticamente el archivo cuando hayamos terminado con él. Luego, estamos recorriendo cada tupla en sortedlist y escribiendo el primer elemento (la palabra) y el segundo elemento (el entero) separados por una pestaña (\t) en el archivo. Finalmente, agregamos un carácter de nueva línea (\n) para pasar a la siguiente línea.

    En tu código original, el error que ves se debe a que i no es un entero, sino una tupla que representa cada elemento en sortedlist. Para acceder al primer y segundo elemento de cada tupla, puedes utilizar la indexación como sortedlist[i][0] y sortedlist[i][1], o simplemente referirte a cada elemento como item al recorrer la lista, como se muestra en el código anterior.

Comments are closed.