python HTML展示表格数据(有合并的单元格)

原数据[(1,2),(1,2),(1,3),(2,4),(2,5)]需要的结果如下图:... 原数据[(1,2),(1,2),(1,3),(2,4),(2,5)]需要的结果如下图: 展开
 我来答
wenjie1024
2017-05-24 · TA获得超过2381个赞
知道大有可为答主
回答量:1737
采纳率:72%
帮助的人:858万
展开全部

拷贝一下代码并保存到本地,然后运行它,再打开那个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))
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式