如何在PyHTML库中渲染原始HTML
如何在PyHTML库中渲染原始HTML
嘿,我刚好碰到过一模一样的问题,给你几个能解决这个问题的办法:
首先,你现在的问题是PyHTML把pandas生成的HTML字符串当成普通文本转义输出了,所以浏览器显示的是代码而不是渲染好的表格。要让它直接渲染原始HTML,核心是告诉PyHTML这段内容不需要转义。
方案1:使用h.raw()方法(推荐)
PyHTML的新版本里,raw()是专门用来插入原始HTML内容的方法,你只需要把to_html()生成的字符串用它包裹起来就行。修改后的代码如下:
s = h.html( h.head( h.title("Student Data") ), h.body( h.h1("Student Details"), h.raw(sdf.to_html(index=False)) ) )
这个方法会直接把pandas生成的表格HTML插入到页面里,不会做任何转义,浏览器就能正常渲染出表格了。如果之前你调用raw()提示不存在,大概率是版本问题,先升级PyHTML到最新版试试:
pip install --upgrade pyhtml
方案2:手动构造表格(备选,不推荐)
如果实在不想用raw(),也可以把pandas的DataFrame数据转换成PyHTML的表格元素,但这种方式比较繁琐,适合需要自定义表格样式的场景。举个简单的例子:
# 先获取表头和数据 headers = sdf.columns.tolist() rows = sdf.values.tolist() # 用PyHTML构造表格 table = h.table( h.thead( h.tr(*[h.th(header) for header in headers]) ), h.tbody( *[h.tr(*[h.td(cell) for cell in row]) for row in rows] ), border="1", klass="dataframe" ) # 然后把table放到body里 s = h.html( h.head(h.title("Student Data")), h.body(h.h1("Student Details"), table) )
不过这种方式需要自己处理样式和结构,远不如直接用raw()方便,所以优先推荐第一种方案。
你试试上面的方法,应该就能看到正常渲染的学生成绩表格啦!
备注:内容来源于stack exchange,提问作者Shoaib Sadiq
相关产品推荐
相关产品推荐

