Una lista de alumnos tiene filas y columnas. Una configuración puede contener listas, números, booleanos y objetos anidados. Podrías inventar tu propio formato de texto, pero después también tendrías que inventar cómo leerlo.
JSON y CSV son dos formatos comunes. La pregunta útil no es «¿cuál es mejor?», sino «¿qué forma tienen mis datos?».
Elegir JSON o CSV por la forma de los datos y procesar un ejemplo mínimo de ambos formatos.
JSON conserva estructuras parecidas a listas y diccionarios
import json
texto = '{"curso": "Python", "activo": true}'
datos = json.loads(texto)
print(datos["curso"])
print(datos["activo"])json.loads() recibe un string con JSON y devuelve estructuras de Python. En este caso obtienes un diccionario con un string y un booleano.
Después de convertirlo, ya no trabajas con llaves y comillas como texto: trabajas con datos["curso"].
dumps hace el viaje contrario: Python hacia JSON
import json
perfil = {"nombre": "Ada", "nivel": 2}
texto = json.dumps(perfil, ensure_ascii=False)
print(texto)Serializar significa convertir una estructura en una representación que puedas guardar o enviar. dumps devuelve un string; no crea un archivo automáticamente.
CSV encaja cuando piensas naturalmente en una tabla
Si cada registro tiene las mismas columnas —por ejemplo nombre, edad y ciudad— CSV suele ser más directo. No representa estructuras anidadas tan bien como JSON.
import csv
from io import StringIO
texto = "nombre,edad\nAda,36\nGuido,35"
lector = csv.DictReader(StringIO(texto))
for fila in lector:
print(fila["nombre"])DictReader usa la cabecera para entregar cada fila como un diccionario. Así puedes pensar en nombres de columnas en lugar de posiciones.
No confundas el formato externo con el tipo que usas dentro del programa
Un archivo JSON es texto. Después de json.load() o json.loads(), tendrás listas, diccionarios, strings, números o booleanos de Python. Un CSV también es texto; el lector lo transforma en filas que puedes procesar.
Secuencia mental: formato externo → parsear → estructuras de Python → trabajar.
Elige el formato por la forma de los datos
Encaja bien con objetos y estructuras anidadas: perfil, configuración, respuesta de API.
Encaja bien con filas regulares que comparten columnas: ventas, mediciones, inventario.
Decide: una ficha de usuario con dirección anidada → JSON. Un registro de 5.000 ventas con fecha, producto e importe → CSV suele ser una representación natural.
Carril A · procesa JSON
Convierte el texto JSON en un diccionario y recupera el nombre.
Ada
La salida aparecerá aquí.
Necesito una pista
- Usa
json.loads(texto).
Ver una solución razonada
import json
texto = '{"nombre": "Ada", "edad": 36}'
datos = json.loads(texto)
print(datos["nombre"])Carril B · procesa CSV
Lee dos filas CSV como diccionarios y suma sus importes.
2 32
La salida aparecerá aquí.
Necesito una pista
- Crea
csv.DictReader(io.StringIO(texto)). - Puedes hacer
filas = list(...).
Ver una solución razonada
import csv import io texto = "producto,importe\nLibro,12\nJuego,20\n" filas = list(csv.DictReader(io.StringIO(texto))) print(len(filas)) print(sum(int(fila["importe"]) for fila in filas))
Elige formato por estructura, no por costumbre
Forzar datos anidados en CSV suele crear columnas extrañas; envolver una tabla sencillísima en JSON puede añadir ruido innecesario.
Como regla inicial: tabla regular → CSV; estructura con niveles, listas o configuración → JSON. Habrá excepciones, pero este criterio te orienta bien al empezar.
Tu salida de esta lección es una decisión razonada
- Sabes que JSON y CSV son representaciones de texto.
- Puedes explicar qué hace
json.loads(). - Puedes justificar por qué una tabla simple suele encajar bien en CSV.
Quédate con la conversión entre formato externo y estructuras de Python. Los detalles de lectura y escritura se consultan cuando los necesites.