国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python使用pyh生成HTML文檔的方法示例

2020-02-22 23:23:44
字體:
供稿:網(wǎng)友

最近在項(xiàng)目中需要將結(jié)果導(dǎo)出到HTML中,在網(wǎng)上搜索的時(shí)候發(fā)現(xiàn)了這個(gè)庫,通過官方的一些文檔以及網(wǎng)上的博客發(fā)現(xiàn)它的使用還是很簡單的,因此選擇在項(xiàng)目中使用它。

在使用的時(shí)候發(fā)現(xiàn)在Python3中有些問題,網(wǎng)上很多地方都沒有提到,因此我在這將它的使用以及我遇到的問題和解決方案整理出來供大家參考

本文主要參考 pyh中文文檔

下載的樣本也是該文中提到的地址

常規(guī)使用

在使用時(shí)一般先導(dǎo)入模塊:

from phy import *

然后可以創(chuàng)建一個(gè)PyH對象就像這樣

page = PyH(title)

其中title是一個(gè)字符串,這個(gè)字符串將作為頁面的標(biāo)題顯示,也就是說此時(shí)產(chǎn)生的HTML代碼就是在頭部加上一個(gè)title標(biāo)簽并將這個(gè)字符串作為文本值

然后我們可以addCSS方法或者addJS方法引入外部的js文件或者css文件(調(diào)用這兩個(gè)函數(shù)將在HTML的頭部產(chǎn)生一個(gè)引入的代碼,對于那種在body中添加style代碼的我暫時(shí)沒有找到什么辦法)

然后就是創(chuàng)建標(biāo)簽對象,對應(yīng)標(biāo)簽類的名字所與在HTML中的對應(yīng)的名稱相同,傳入對象的參數(shù)就是標(biāo)簽中的屬性,除了class屬性對應(yīng)的參數(shù)名稱是cl外,其余的參數(shù)名稱與在HTML中的屬性一一對應(yīng)。比如我們要?jiǎng)?chuàng)建一個(gè)div標(biāo)簽可以這樣寫

myDiv = div('測試div', id = 'div1', cl = "cls_div")

最終生成的HTML代碼如下:

<div id = 'div1' class = 'cls_div'>測試div</div>

將元素加入某個(gè)元素中可以使用<<符號,該符號返回的是最后被包含的符號對象。比如這樣

div(id = 'div1') << p('測試' cl = 'p_tag')

這句代碼會返回p元素對應(yīng)的對象,而生成的HTML代碼如下:

<div id = 'div1'>  <p class = 'p_tag'>測試</p></div>

當(dāng)生成了合適的HTML文檔后可以使用printOut方法將其打印,也可以使用render函數(shù)返回對應(yīng)的HTML代碼,以便我們進(jìn)行存盤或者做進(jìn)一步處理

上面只是簡單的做一下介紹,詳細(xì)的使用方法請參看上面提到的一篇文章,這上面寫的比較詳細(xì)。下面來通過一個(gè)例子代碼來說明我是如何處理一些出現(xiàn)的錯(cuò)誤、做一些簡單的擴(kuò)展,并大致看看里面的源代碼

例子

from pyh import *import codecsfrom xml.sax.saxutils import escapeWORD_WIDTH = 100def create_base(table_title, page):  page.addCSS('base.css')  #展示信息的表  base_table = page << table(cl = 'diff', id = 'difflib_chg_to0__top', cellspacing = '0', cellpadding = '0', rules = 'groups')  for i in range(4):    base_table << colgroup()  #表頭  t_head = base_table << thead()  tr_tag = t_head << tr()  tr_tag << th(cl = 'diff_next') << br()  tr_tag << th(table_title, colspan = '2', cl = 'diff_header')  t_body = base_table << tbody()  return t_body#寫入一行信息def write_line(tr_tag, mark, data):  tr_tag << td(mark, cl = 'diff_header')  tr_tag << td(data)def txt2html(title, table_title, ifile, ofile):  i_f = codecs.open(ifile, 'r',encoding='utf-8')  lines = i_f.read().splitlines()  i_f.close()  page = PyH(title)  t_body = create_base(table_title, page)  lineno = 1  for data in lines:    if len(data) >= WORD_WIDTH:      for i in range(len(data) // WORD_WIDTH + 1):        sub_data = data[WORD_WIDTH * i: min(WORD_WIDTH * (i + 1), len(data) - 1)]        if i == 0:          mark = str(lineno)        else:          mark = '>'        tr_tag = t_body << tr()        sub_data = escape(sub_data)        sub_data = sub_data.replace(" ", " ")        sub_data = sub_data.replace("/t", "  ")        write_line(tr_tag, mark, sub_data)    else:      tr_tag = t_body << tr()      data = escape(data)      data = data.replace(" ", " ")      data = data.replace("/t", "  ")      write_line(tr_tag, str(lineno), data)    lineno += 1  html = page.render()  o_f = codecs.open(ofile, 'w', encoding= 'utf-8')  o_f.write(html)  o_f.close()            
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 双辽市| 通辽市| 双柏县| 民丰县| 会泽县| 老河口市| 玉环县| 兴义市| 贡嘎县| 麦盖提县| 大同市| 抚顺市| 铜梁县| 广东省| 宁都县| 镶黄旗| 财经| 广饶县| 凌海市| 浦北县| 嫩江县| 林州市| 岳池县| 荔浦县| 玛曲县| 视频| 花莲县| 铁岭县| 镇赉县| 成武县| 宜丰县| 瑞昌市| 鹰潭市| 景谷| 凤冈县| 醴陵市| 古交市| 松溪县| 胶南市| 康平县| 五台县|