usando el motor de aplicaciones - sí, sé todo sobre las plantillas de django y otros motores de plantillas.python: serialice un diccionario en una simple salida html
Digamos que tengo un diccionario o un objeto simple, no sé su estructura y quiero serializarlo en html.
así que si tuviera
{'data':{'id':1,'title':'home','address':{'street':'some road','city':'anycity','postal':'somepostal'}}}
quieren que quiero es que se han convertido en una forma de HTML legible usando listas o tablas;
data:
id:1
title:home
address:
street: some road
city: anycity
postal:somepostal
Ahora sé que puedo hacer
for key in dict.items
print dict[key]
pero que suele sumergirse en los valores de los niños y la lista de cada tecla, el valor de par cuando la clave/valor es un diccionario - es decir, la dirección de dict.
Es un módulo para python que es liviano/rápido y lo hará muy bien. o alguien tiene un código simple que pueda pegar y que pueda hacer esto.
Solución Todas las soluciones aquí fueron útiles. pprint es, sin duda, el medio más estable de imprimir el diccionario, aunque no llega a devolver nada cerca de html. Aunque todavía está imprimible.
terminé con esto por ahora:
def printitems(dictObj, indent=0):
p=[]
p.append('<ul>\n')
for k,v in dictObj.iteritems():
if isinstance(v, dict):
p.append('<li>'+ k+ ':')
p.append(printitems(v))
p.append('</li>')
else:
p.append('<li>'+ k+ ':'+ v+ '</li>')
p.append('</ul>\n')
return '\n'.join(p)
Convierte la dict en listas desordenadas, que está bien por ahora. algunos CSS y quizás un pequeño ajuste deberían hacerlo legible.
Voy a recompensar la respuesta a la persona que escribió el código anterior, hice un par de pequeños cambios ya que las listas desordenadas no estaban anidando. Espero que todos estén de acuerdo en que muchas de las soluciones ofrecidas resultaron útiles, pero el código anterior representa una verdadera representación html de un diccionario, incluso si es tosco.
no ser un pedante, pero no eres la serialización de su diccionario, que está imprimiéndolo (con formato HTML). – Seth
@seth sí, supongo que la palabra serializar fue mal utilizada. – spidee