最近在项目中需要将结果导出到HTML中,在网上搜索的时候发现了这个库,通过官方的一些文档以及网上的博客发现它的使用还是很简单的,因此选择在项目中使用它。
在使用的时候发现在Python3中有些问题,网上很多地方都没有提到,因此我在这将它的使用以及我遇到的问题和解决方案整理出来供大家参考
本文主要参考pyh中文文档
下载的样本也是该文中提到的地址
常规使用
在使用时一般先导入模块:
从体育进口*
然后可以创建一个PyH对象就像这样
页面=PyH(标题)标题是
其中一个字符串,这个字符串将作为页面的标题显示,也就是说此时产生的HTML代码就是在头部加上一个标题标签并将这个字符串作为文本值
然后我们可以addCSS方法或者addJS方法引入外部的js文件或者css文件(调用这两个函数将在HTML的头部产生一个引入的代码,对于那种在身体中添加风格代码的我暂时没有找到什么办法)
然后就是创建标签对象,对应标签类的名字所与在HTML中的对应的名称相同,传入对象的参数就是标签中的属性,除了类属性对应的参数名称是cl外,其余的参数名称与在HTML中的属性一一对应比。如我们要创建一个div标签可以这样写
myDiv=div(“测试div ', id=癲iv1”, cl=癱ls_div”)
最终生成的HTML代码如下:
& lt; div id=癲iv1”class=癱ls_div”在测试div
将元素加入某个元素中可以使用& lt; & lt;符号,该符号返回的是最后被包含的符号对象。比如这样
div (id=癲iv1”) & lt; & lt;p(“测试' cl=p_tag)
这句代码会返回p元素对应的对象,而生成的HTML代码如下:
& lt; div id=癲iv1”比; & lt; p类=' p_tag '在测试& lt;/p> & lt;/div>
当生成了合适的HTML文档后可以使用打印方法将其打印,也可以使用渲染函数返回对应的HTML代码,以便我们进行存盘或者做进一步处理
上面只是简单的做一下介绍,详细的使用方法请参看上面提到的一篇文章,这上面写的比较详细。下面来通过一个例子代码来说明我是如何处理一些出现的错误,做一些简单的扩展,并大致看看里面的源代码
例子
从pyh进口* 进口编解码器 从sax。saxutils进口逃脱 WORD_WIDTH=100 def create_base (table_title、页面): page.addCSS (“base.css”) #展示信息的表 base_table=页& lt; & lt;表(cl=' diff ' id=癲ifflib_chg_to0__top”,单元格间距=' 0 ',单元格边距=' 0 ',规则=凹拧? 因为我在范围(4): base_table & lt; & lt;colgroup()指定表格中 #表头 t_head=base_table & lt; & lt;thead () tr_tag=t_head & lt; & lt;tr () tr_tag & lt; & lt;th (cl=diff_next) & lt; & lt;br () tr_tag & lt; & lt;th (table_title colspan=' 2 ', cl=癲iff_header”) t_body=base_table & lt; & lt;tbody () 返回t_body #写入一行信息 def write_line (tr_tag、马克、数据): tr_tag & lt; & lt;td(马克,cl=癲iff_header”) tr_tag & lt; & lt;td(数据) def txt2html(标题、table_title ifile ofile): i_f=编解码器。打开(ifile,‘r’,编码=皍tf - 8”) 行=i_f.read () .splitlines () i_f.close () 页面=PyH(标题) t_body=create_base (table_title页面) lineno=1 行数据: 如果len(数据)在=WORD_WIDTH: 因为我在范围(len(数据)//WORD_WIDTH + 1): sub_data=https://www.yisu.com/zixun/data [WORD_WIDTH *我:min (WORD_WIDTH * (i + 1), len(数据)- 1)) 如果我==0: 马克=str (lineno) 其他: 马克='在' tr_tag=t_body & lt; & lt;tr () sub_data=https://www.yisu.com/zixun/escape (sub_data) sub_data=https://www.yisu.com/zixun/sub_data.replace (" ", " ") sub_data=https://www.yisu.com/zixun/sub_data.replace (“\ t ", " ") write_line (tr_tag,马克,sub_data) 其他: tr_tag=t_body & lt; & lt;tr () data=https://www.yisu.com/zixun/escape(数据) data=https://www.yisu.com/zixun/data.replace (" ", " ") data=https://www.yisu.com/zixun/data.replace (“\ t ", " ") write_line (tr_tag str (lineno),数据) lineno +=1 html=page.render () o_f=编解码器。打开(ofile,“w”,编码=皍tf - 8”) o_f.write (html) o_f.close ()Python使用pyh生成HTML文档的方法示例