2016-09-19 95 views
0

我有一个包含字典的列表,我想将其输出到HTML表格中。从字典列表中构建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> 

但我不知道该如何相应地获取这些值以及它们的格式。

回答

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> 
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>