sử dụng công cụ ứng dụng - vâng tôi biết tất cả về các mẫu django và các công cụ mẫu khác.python: tuần tự hóa từ điển thành đầu ra html đơn giản
Cho phép nói rằng tôi có từ điển hoặc một đối tượng đơn giản, tôi không biết cấu trúc của nó và tôi muốn tuần tự hóa nó thành html.
vì vậy nếu tôi đã có
{'data':{'id':1,'title':'home','address':{'street':'some road','city':'anycity','postal':'somepostal'}}}
muốn tôi muốn là kết xuất trong một số hình thức html có thể đọc được sử dụng danh sách hoặc bảng;
data:
id:1
title:home
address:
street: some road
city: anycity
postal:somepostal
bây giờ tôi biết tôi có thể làm
for key in dict.items
print dict[key]
nhưng điều đó sẽ không bổ nhào vào các giá trị con và liệt kê mỗi chìa khóa, cặp giá trị khi khóa/giá trị là một cuốn từ điển - tức là dict địa chỉ.
Mô-đun của chúng cho trăn có trọng lượng nhẹ/nhanh sẽ làm điều này một cách độc đáo. hoặc bất cứ ai có bất kỳ mã đơn giản mà họ có thể dán mà có thể làm điều này.
Giải pháp Tất cả các giải pháp ở đây đều hữu ích. pprint là không có nghi ngờ các phương tiện ổn định hơn của in ấn từ điển, mặc dù nó rơi ngắn trở về bất cứ điều gì gần html. Mặc dù vẫn có thể in được.
tôi đã kết thúc với điều này cho bây giờ:
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)
Nó chuyển đổi các dict vào danh sách không có thứ tự đó là ok cho bây giờ. một số css và có lẽ một chút tinh chỉnh nên làm cho nó dễ đọc.
Tôi sẽ trả lời câu trả lời cho người đã viết mã ở trên, tôi đã thực hiện một vài thay đổi nhỏ vì danh sách không có thứ tự không hoạt động. Tôi hy vọng tất cả đều đồng ý rằng nhiều giải pháp được cung cấp tỏ ra hữu ích, nhưng đoạn mã trên ám chỉ một biểu diễn html thực sự của từ điển, ngay cả khi thô.
Không phải là một pedant, nhưng bạn không serializing từ điển của bạn, bạn in nó (với định dạng HTML). – Seth
@seth vâng tôi đoán từ serialize đã bị bỏ lỡ. – spidee