python:将字典序列化为简单的html输出

标签 python

使用应用引擎 - 是的,我了解所有关于 Django 模板和其他模板引擎的知识。

假设我有一个字典或一个简单的对象,我不知道它的结构并且我想将它序列化为 html。

如果我有

{'data':{'id':1,'title':'home','address':{'street':'some road','city':'anycity','postal':'somepostal'}}}

我想要的是使用列表或表格以某种形式的可读 html 呈现;

data:
   id:1
   title:home
   address:
           street: some road
           city: anycity
           postal:somepostal

现在我知道我能做到

for key in dict.items
print dict[key]

但是当键/值是字典时,不会深入到子值并列出每个键、值对 - 即地址字典。

他们的 python 模块是轻量级/快速的,可以很好地完成这项工作。或者是否有人可以粘贴可以执行此操作的任何简单代码。

解决方案 这里的所有解决方案都很有用。 pprint 无疑是打印字典的更稳定的方法,尽管它不能返回任何接近 html 的内容。虽然仍然可以打印。

我现在结束了这个:

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)

它将 dict 转换为无序列表,目前还可以。一些 CSS 和一些小的调整应该可以让它变得可读。

我将把答案奖励给编写上述​​代码的人,我做了一些小改动,因为无序列表没有嵌套。我希望所有人都同意所提供的许多解决方案被证明是有用的,但是上面的代码呈现了字典的真实 html 表示,即使是粗糙的。​​

最佳答案

pyfunc 制作的示例可以轻松修改以生成简单的嵌套 html 列表。

z = {'data':{'id':1,'title':'home','address':{'street':'some road','city':'anycity','postal':'somepostal'}}}

def printItems(dictObj, indent):
    print '  '*indent + '<ul>\n'
    for k,v in dictObj.iteritems():
        if isinstance(v, dict):
            print '  '*indent , '<li>', k, ':', '</li>'
            printItems(v, indent+1)
        else:
            print ' '*indent , '<li>', k, ':', v, '</li>'
    print '  '*indent + '</ul>\n'

printItems(z,0)

当然不是非常漂亮,但也许可以从某个地方开始。如果您只想可视化数据,pprint模块确实足够好。您可以在 pprint 的结果上使用“pre”标签并将其放在您的网页上。

pprint 版本看起来像这样:

import pprint
z = {'data':{'id':1,'title':'home','address':{'street':'some road','city':'anycity','postal':'somepostal'}}}

print '<pre>', pprint.pformat(z), '</pre>'

html 输出看起来像这样:

{'data': {'address': {'city': 'anycity',
                      'postal': 'somepostal',
                      'street': 'some road'},
          'id': 1,
          'title': 'home'}}

这不是漂亮,但它至少以更结构化的方式显示数据。

关于python:将字典序列化为简单的html输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3930713/

相关文章:

Python Pandas 将 Dataframe 列向下移动到行中(重置列上的索引?)

python - 如何替换 pandas 中的列名称但基于字典?

python - 通过 Python 从特定的 Outlook 帐户发送电子邮件?

javascript - 当服务器处理 View 时,如何在 Django 中显示加载动画?

python - 名称 'sp' 未明确定义

python - 如何对绘制 PDF 图形的 Python 函数进行单元测试?

javascript - JS+REST+NodeJS : How to parse a JSON list from a JSON object

python - 如何使用字符串定义函数名

python - 我想要 Python 作为前端,Fortran 作为后端。我还想让 Fortran 部分并行 - 最佳策略?

python - 带有 Flask 的 Windows 服务仅在 DEBUG 模式下运行。正常模式似乎崩溃