从词典列表构建HTML表

时间:2016-09-19 13:02:07

标签: python python-3.x

我有一个包含字典的列表,我想将其输出到HTML表格中。

我的列表如下所示:

[{'description': 'KA8ts5', 'password': 'KA8ts5', 'username': 'test4'}, 
 {'description': '5j6mEF', 'password': '5j6mEF', 'username': 'test5'}]

我试图让它看起来如下:

<tr><td>test4</td><td>KA8ts5</td></tr>
<tr><td>test5</td><td>5j6mEF</td></tr>

但我不确定如何获取这些值以及相应地格式化它们。

2 个答案:

答案 0 :(得分:1)

我会使用模板引擎,例如makojinja2

使用mako的示例:

from mako.template import Template

template = """
<table>
% for user in users:
     <tr>
        <td>${user['username']}</td>
        <td>${user['description']}</td>
     </tr>
% endfor
</table>
"""

users = [
    {'description': 'KA8ts5', 'password': 'KA8ts5', 'username': 'test4'},
    {'description': '5j6mEF', 'password': '5j6mEF', 'username': 'test5'}
]
result = Template(template).render(users=users)
print(result)

打印:

<table>
     <tr>
        <td>test4</td>
        <td>KA8ts5</td>
     </tr>
     <tr>
        <td>test5</td>
        <td>5j6mEF</td>
     </tr>
</table>

答案 1 :(得分:0)

您可以使用contextlib文档中提供的示例并相应地构建它。

基本上,使用@contextmanager创建一个上下文管理器,添加初始和结束标记,并在with块中打印出所需的值。上下文管理器,如文档中所示:

from contextlib import contextmanager

@contextmanager
def tag(name):
    print("<%s>" % name, end='')
    yield
    print("</%s>" % name, end='')

以及使用它的实际样本:

l = [{'description': 'KA8ts5', 'password': 'KA8ts5', 'username': 'test4'}, 
     {'description': '5j6mEF', 'password': '5j6mEF', 'username': 'test5'}]    

for d in l:
    with tag('tr'):
        with tag('td'):
            print(d['username'], end='')
        with tag('td'):
            print(d['password'], end='')
    print()

输出:

<tr><td>test4</td><td>KA8ts5</td></tr>
<tr><td>test5</td><td>5j6mEF</td></tr>