2013-10-25 113 views
0

我需要以適當格式將嵌套字典寫入HTML文件。就像HTML表格中的每個鍵值對一樣。將嵌套字典寫入HTML文件

with open('index1.html', 'w') as report: 

    report.write('<html>') 
    report.write('<body>') 
    report.write('<table border="1">') 
    report.write('<center>') 
    #for i in range(10): 
    for key,value in features.iteritems(): 
     report.write('<tr>') 
     report.write('<td>{}</td><td>{}</td>\n'.format(key,value) 
     report.write('<tr>') 
    report.write('</center>') 
    report.write('</table>') 
    report.write('</html>') 
    report.write('</body>') 

這就是我的字典的外觀。

{ 
"1": { 
    "Port hw_addr": "[62, 74, 73, 133, 83, 75]", 
    "Port A advertised": 0, 
    "Port A config": 0, 
    "Port A curr": 192, 
    "Port A name": "veth0", 
    "Port A peer": 0, 
    "Port A state": 0, 
    "Port A supported": 0, 
    "port_no": 1 
}, 
"2": { 
    "Port hw_addr": "[18, 24, 239, 62, 79, 131]", 
    "Port A advertised": 0, 
    "Port A config": 0, 
    "Port A curr": 192, 
    "Port A name": "veth2", 
    "Port A peer": 0, 
    "Port A state": 0, 
    "Port A supported": 0, 
    "port_no": 2 
}, 
"3": { 
    "Port hw_addr": "[134, 91, 48, 58, 109, 123]", 
    "Port A advertised": 0, 
    "Port A config": 0, 
    "Port A curr": 192, 
    "Port A name": "veth4", 
    "Port A peer": 0, 
    "Port A state": 0, 
    "Port A supported": 0, 
    "port_no": 3 
}, 
"4": { 
    "Port hw_addr": "[182, 146, 36, 212, 132, 231]", 
    "Port A advertised": 0, 
    "Port A config": 0, 
    "Port A curr": 192, 
    "Port A name": "veth6", 
    "Port A peer": 0, 
    "Port A state": 0, 
    "Port A supported": 0, 
    "port_no": 4 
}, 
"65534": { 
    "Port hw_addr": "[0, 35, 32, 82, 18, 23]", 
    "Port A advertised": 0, 
    "Port A config": 0, 
    "Port A curr": 130, 
    "Port A name": "tap0", 
    "Port A peer": 0, 
    "Port A state": 0, 
    "Port A supported": 0, 
    "port_no": 65534 
}, 
"No of Ports": 5, 
"No of Tables": "2", 
"OFPAT_ENQUEUE": true, 
"OFPAT_OUTPUT": true, 
"OFPAT_SET_DL_DST": true, 
"OFPAT_SET_DL_SRC": true, 
"OFPAT_SET_NW_DST": true, 
"OFPAT_SET_NW_TOS": false, 
"OFPAT_SET_TP_DST": true, 
"OFPAT_SET_TP_SRC": true, 
"OFPAT_SET_VLAN_PCP": true, 
"OFPAT_SET_VLAN_VID": true, 
"OFPAT_STRIP_VLAN": true, 
"OFPC_ARP_MATCH_IP": true, 
"OFPC_FLOW_STATS": true, 
"OFPC_IP_REASM": false, 
"OFPC_PORT_STATS": true, 
"OFPC_QUEUE_STATS": true, 
"OFPC_RESERVED": false, 
"OFPC_STP": false, 
"OFPC_TABLE_STATS": true, 
"buffer_size": "256", 
"datapath_id": true 

}

關鍵值1,2,3,4和65545是嵌套的。我想要一行中的鍵和下一列中相同行中相應的值列表(正確格式化)。它像一個字符串一樣被連續打印。

+0

那些之間的另一個是您的格式正確?它看起來像report.write語句應該在with塊。 – joeButler

+0

是的..這是一個錯字。 – Mark

+0

預期產量是多少?舉個例子。 – freakish

回答

0

我已經把真和假歸結爲真和假。

而且我關閉這是錯誤的TR和交換的近身和HTML

features = { 
"1": { 
    "Port hw_addr": "[62, 74, 73, 133, 83, 75]", 
    "Port A advertised": 0, 
    "Port A config": 0, 
    "Port A curr": 192, 
    "Port A name": "veth0", 
    "Port A peer": 0, 
    "Port A state": 0, 
    "Port A supported": 0, 
    "port_no": 1 
}, 
"2": { 
    "Port hw_addr": "[18, 24, 239, 62, 79, 131]", 
    "Port A advertised": 0, 
    "Port A config": 0, 
    "Port A curr": 192, 
    "Port A name": "veth2", 
    "Port A peer": 0, 
    "Port A state": 0, 
    "Port A supported": 0, 
    "port_no": 2 
}, 
"3": { 
    "Port hw_addr": "[134, 91, 48, 58, 109, 123]", 
    "Port A advertised": 0, 
    "Port A config": 0, 
    "Port A curr": 192, 
    "Port A name": "veth4", 
    "Port A peer": 0, 
    "Port A state": 0, 
    "Port A supported": 0, 
    "port_no": 3 
}, 
"4": { 
    "Port hw_addr": "[182, 146, 36, 212, 132, 231]", 
    "Port A advertised": 0, 
    "Port A config": 0, 
    "Port A curr": 192, 
    "Port A name": "veth6", 
    "Port A peer": 0, 
    "Port A state": 0, 
    "Port A supported": 0, 
    "port_no": 4 
}, 
"65534": { 
    "Port hw_addr": "[0, 35, 32, 82, 18, 23]", 
    "Port A advertised": 0, 
    "Port A config": 0, 
    "Port A curr": 130, 
    "Port A name": "tap0", 
    "Port A peer": 0, 
    "Port A state": 0, 
    "Port A supported": 0, 
    "port_no": 65534 
}, 
"No of Ports": 5, 
"No of Tables": "2", 
"OFPAT_ENQUEUE": True, 
"OFPAT_OUTPUT": True, 
"OFPAT_SET_DL_DST": True, 
"OFPAT_SET_DL_SRC": True, 
"OFPAT_SET_NW_DST": True, 
"OFPAT_SET_NW_TOS": False, 
"OFPAT_SET_TP_DST": True, 
"OFPAT_SET_TP_SRC": True, 
"OFPAT_SET_VLAN_PCP": True, 
"OFPAT_SET_VLAN_VID": True, 
"OFPAT_STRIP_VLAN": True, 
"OFPC_ARP_MATCH_IP": True, 
"OFPC_FLOW_STATS": True, 
"OFPC_IP_REASM": False, 
"OFPC_PORT_STATS": True, 
"OFPC_QUEUE_STATS": True, 
"OFPC_RESERVED": False, 
"OFPC_STP": False, 
"OFPC_TABLE_STATS": True, 
"buffer_size": "256", 
"datapath_id": True 
} 



with open('index1.html', 'w') as report: 

    report.write('<html>') 
    report.write('<body>') 
    report.write('<table border="1">') 
    report.write('<center>') 
    #for i in range(10): 
    for key,value in features.iteritems(): 
     report.write('<tr>') 
     report.write('<td>{}</td><td>{}</td>\n'.format(key,value)) 
     report.write('</tr>') 
    report.write('</center>') 
    report.write('</table>') 
    report.write('</body>') 
    report.write('</html>') 
1

創建一個簡單的語言模板礦用已經取得像Jinja2

def recurse(dict): 
    if type(dict)==type({}): 
    for k in dict: 
     recurse(dict[k]) 
    else: 
     print_to_html(dict) 
+0

不錯的代碼!也許「字典」是一個不好的變量名稱,因爲它是Python中的保留字 –