2016-09-19 11 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

Iは、テンプレートエンジンを使用するmakoまたはjinja2のようになります。

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> 
関連する問題