2014-04-04 77 views
2

生成HTML表我將如何轉換下面字典成HTML表格從Python字典

{'Retry': ['30', '12', '12'] 'Station MAC': ['aabbccddeea', 'ffgghhiijj', 'kkllmmnnoo'] Download': ['70.', '99', '90'] } 

我想實現HTML表格式

Retry  MAC   Download 
    30  aabbccddee  70 
    12  ffgghhiijj  99 
    12  kkllmmnnoo  90 

我寫的CSS表邊框和一切,但數據沒有得到正確填寫。我正在用web2py試試這個。但是查找難以編寫邏輯以表格格式打印上面的字典。

謝謝!

回答

4

你可以把它一點點更容易通過使用的web2py TABLETR助手:

在控制器:

def myfunc(): 
    d = {'Retry': ['30', '12', '12'], 
     'Station MAC': ['aabbccddeea', 'ffgghhiijj', 'kkllmmnnoo'], 
     'Download': ['70.', '99', '90']} 
    colnames = ['Retry', 'Station MAC', 'Download'] 
    rows = zip(*[d[c] for c in colnames]) 
    return dict(rows=rows, colnames=colnames) 

並在視圖:

{{=TABLE(THEAD(TR([TH(c) for c in colnames])), 
     [TR(row) for row in rows]))}} 
+0

這實際上是在元素之後創建一個額外的行。 –

+0

謝謝!這很棒 !但只有東西是額外的行 –

+0

太糟糕的web2py不適用於python 3 –

2

喜歡的東西

d = {'Retry': ['30', '12', '12'], 'Station MAC': ['aabbccddeea', 'ffgghhiijj', 'kkllmmnnoo'], 'Download': ['70.', '99', '90']} 

keys = d.keys() 
length = len(d[keys[0]]) 

items = ['<table style="width:300px">', '<tr>'] 
for k in keys: 
    items.append('<td>%s</td>' % k) 
items.append('</tr>') 

for i in range(length): 
    items.append('<tr>') 
    for k in keys: 
     items.append('<td>%s</td>' % d[k][i]) 
    items.append('</tr>') 

items.append('</table>') 

print '\n'.join(items) 
2

使用字典不會保持你列的順序,但如果你是確定與那麼這個示例將工作

data = {'Retry': ['30', '12', '12'], 
     'Station MAC': ['aabbccddeea', 'ffgghhiijj', 'kkllmmnnoo'], 
     'Download': ['70.', '99', '90']} 

html = '<table><tr><th>' + '</th><th>'.join(data.keys()) + '</th></tr>' 

for row in zip(*data.values()): 
    html += '<tr><td>' + '</td><td>'.join(row) + '</td></tr>' 

html += '</table>' 

print html 
0

國就這個問題相當徹底搜查。到目前爲止,我找到的最佳解決方案是Google提供的prettytable包。我舉一個例子,但鏈接中的內容很全面。