python HTML展示表格数据(有合并的单元格)
拷贝一下代码并保存到本地,然后运行e5a48de588b67a6431333363373163它,再打开那个Demo的链接就可以看到效果了
#!/usr/bin/env python3 from collections import OrderedDict from os.path import dirname, abspath, join as joinpath L = [(1,2),(1,2),(1,3),(2,4),(2,5)] column_names = (\'列名\', \'数据\') odict = OrderedDict() for k, v in L: if k not in odict: odict[k] = [v] else: odict[k].append(v) sa = \'\'\' <!DOCTYPE HTML> <meta charset="UTF-8"> <html> <body> <table border="1" cellpadding="10"> <tr> <th>{}</th> <th>{}</th> </tr> \'\'\'.format(*column_names) sc = \'\'\' </table> </body> </html> \'\'\' sb = [] tdform = \'<td align="center">{}</td>\'.format for k, v in odict.items(): if len(v) == 1: sb.append(\'<tr>\') sb.append(tdform(k)) sb.append(tdform(v)) sb.append(\'</tr>\') else: for i, subv in enumerate(v): sb.append(\'<tr>\') if i == 0: sb.append(\'<td rowspan="{}" align="center">{}</td>\'.format( len(v), k)) sb.append(tdform(subv)) sb.append(\'</tr>\') fn = \'table.html\' ss = sa + \'\n\'.join(sb) + sc try: from bs4 import BeautifulSoup soup = BeautifulSoup(ss) ss = soup.prettify() except: pass with open(fn, \'w\') as f: f.write(ss) print(ss) print(\'Demo: file://\'+joinpath(abspath(dirname(__file__)), fn))
1.代码示例
<!DOCTYPE HTML> <meta charset="UTF-8"> <html> <body> <table border="1" cellpadding="10"> <tr> <th>列名</th> <th>数据</th> <th>hosts</th> </tr> <tr> <td rowspan="5" align="center">1</td> <td rowspan="2" align="center">2</td> <td align="center">host2</td> </tr> <tr> <td align="center">host2</td> </tr> <tr> <td rowspan="3" align="center">3</td> <td align="center">host3-1</td> </tr> <tr> <td align="center">host3-2</td> </tr> <tr> <td align="center">host3-3</td> </tr> <tr> <td rowspan="2" align="center">2</td> <td align="center">4</td> <td align="center">host4</td> </tr> <tr> <td align="center">5</td> <td align="center">host5</td> </tr> </table> </body> </html>
效果
2.html代码:
<!DOCTYPE HTML> <meta charset="UTF-8"> <html> <body> <table border="1" cellpadding="10"> <tr> <th>服务池</th> <th>IP</th> <th>hosts</th> </tr> <tr> <td rowspan="5" align="center">1</td> <td rowspan="2" align="center">2</td> <td align="center">host2</td> </tr> <tr> <td align="center">host2</td> </tr> <tr> <td align="center">3</td> <td rowspan="3" align="center">host3-1</td> </tr> <tr> <td align="center">3</td> </tr> <tr> <td align="center">3</td> </tr> <tr> <td rowspan="2" align="center">2</td> <td align="center">4</td> <td align="center">host4</td> </tr> <tr> <td align="center">5</td> <td align="center">host5</td> </tr> </table> </body> </html>
效果