當前位置:首頁 » 編程語言 » python轉換html

python轉換html

發布時間: 2022-11-30 09:50:57

python怎樣做html的表格

現要實現python製作html格式的表格,利用Python對字元串str.format()格式化操作進行處理,在日常對CVS格式文件處理過程當中,經常會將CVS格式文件進行轉換,在正式場合是程序讀取CVS文件進行轉換並輸出到html格式的文件當中,但現在只是實現一下轉換的過程,需要輸入以逗號分隔的數據。

在設計程式的時候,需要先定義一下整個代碼的框架,首先我們要定義一個主函數main(),雖然Python沒有規定入口函數,一般在正式的開發中都設計了一個main()函數作為程序的入口函數,或許這是一種規范吧。然後我們在定義一個列印表頭的方法print_head(),並在主函數里進行調用。再定義一個列印表尾的方法print_end(),也在主函數中進行調用。定義print_line()為列印表格行,定義extract_field()處理cvs行數據轉換為list集合數據。最後再定義一個處理特殊符號的方法escape_html(),因為在html代碼中為了避免與它的標簽沖突,特要進行特殊符號的轉換,如&-->&
還有就是對長度過長的數據要進行處理並用...代替

源代碼:

#Author Tandaly

#Date 2013-04-09

#File Csv2html.py

#主函數

def main():

print_head()

maxWidth = 100

count = 0

while True:

try:

line = str(input())

if count == 0:

color = "lightgreen"

elif count%2 == 0:

color = "white"

else:

color = "lightyellow"

print_line(line, color, maxWidth)

count += 1

except EOFError:

break

print_end()

#列印表格頭

def print_head():

print("")

#列印錶行

def print_line(line, color, maxWidth):

tr = "".format(color)

tds = ""

if line is not None and len(line) > 0:

fields = axtract_fields(line)

for filed in fields:

td = "{0}".format(filed if (len(str(filed)) <= maxWidth) else
(str(filed)[:100] + "..."))

tds += td

tr += "{0}

".format(tds)

print(tr)

#列印表格尾

def print_end():

print("")

#抽取行值

def axtract_fields(line):

line = escape_html(line)

fields = []

field = ""

quote = None

for c in line:

if c in "\"":

if quote is None:

quote = c

elif quote == c:

quote = None

continue

if quote is not None:

field += c

continue

if c in ",":

fields.append(field)

field = ""

else:

field += c

if len(field) > 0:

fields.append(field)

return fields

#處理特殊符號

def escape_html(text):

text = text.replace("&", "&")

text = text.replace(">", ">")

text = text.replace("<", "<")

return text

#程序入口

if __name__ == "__main__":

main()

運行結果:

>>>

"nihao","wo"

nihaowo

"sss","tandaly"

...tandaly

"lkkkkkkkkkkksdfssssssssssssss",
34

...34

② Python打開網頁並另存為靜態html怎麼實現

用Python的requests庫解決這個問題比較簡單,常式如下:


importsys
importrequests

reload(sys)
sys.setdefaultencoding('utf-8')

r=requests.get('xxx網址')
fh=open('test.html','w')
fh.write(r.text)
fh.close()


說明一下,requests庫不是Python內置的,不過很流行,很多發行版都帶,沒帶的話就去requests官網去下載,或者用 pip install requests命令安裝最新版。


這個程序里在保存文件前,還需要把字元編碼設置一下,用的是自帶的sys庫。

③ Python html 模塊簡介

比如:

比如,數學符號 , ,可以直接獲得:

escape 將特殊字元 & , < 和 > 替換為HTML安全序列。如果可選的 flags quote 為 True (默認值),則還會翻譯引號字元,包括雙引號( " )和單引號( ' )字元。

將字元串 s 中的所有命名和數字字元引用 (例如 > , > , > ) 轉換為相應的 Unicode 字元。此函數使用 HTML 5 標准為有效和無效字元引用定義的規則,以及 HTML 5 命名字元引用列表 。

這個模塊定義了一個 HTMLParser 類,為 HTML(超文本標記語言)和 XHTML 文本文件解析提供基礎。

class html.parser.HTMLParser(*, convert_charrefs=True) 創建一個能解析無效標記的解析器實例。查找標簽(tags)和其他標記(markup)並調用 handler 函數。

用法:

通過調用 self.handle_starttag 處理開始標簽,或通過調用 self.handle_startendtag 處理結束標簽。標簽之間的數據通過以 data 為參數調用 self.handle_data 從解析器傳遞到派生類(數據可以分成任意塊)。如果 convert_charrefs 為 True ,則將字元引用自動轉換為相應的 Unicode 字元(並且 self.handle_data 不再拆分成塊),否則通過調用帶有字元串的 self.handle_entityref 或 self.handle_charref 來傳遞它們以分別包含命名或數字引用作為參數。如果 convert_charrefs 為 True (默認值),則所有字元引用( script / style 元素中的除外)都會自動轉換為相應的 Unicode 字元。

一個 HTMLParser 類的實例用來接受 HTML 數據,並在標記開始、標記結束、文本、注釋和其他元素標記出現的時候調用對應的方法。要實現具體的行為,請使用 HTMLParser 的子類並重載其方法。

這個解析器不檢查結束標記是否與開始標記匹配,也不會因外層元素完畢而隱式關閉了的元素引發結束標記處理。

下面是簡單的 HTML 解析器的一個基本示例,使用 HTMLParser 類,當遇到開始標記、結束標記以及數據的時候將內容列印出來。

輸出:

HTMLParser.reset() 重置實例。丟失所有未處理的數據。在實例化階段被隱式調用。

HTMLParser.feed(data) 填充一些文本到解析器中。如果包含完整的元素,則被處理;如果數據不完整,將被緩沖直到更多的數據被填充,或者 close() 被調用。 data 必須為 str 類型。

HTMLParser.close() 如同後面跟著一個文件結束標記一樣,強制處理所有緩沖數據。這個方法能被派生類重新定義,用於在輸入的末尾定義附加處理,但是重定義的版本應當始終調用基類 HTMLParser 的 close() 方法。

HTMLParser.getpos() 返回當前行號和偏移值。

HTMLParser.get_starttag_text() 返回最近打開的開始標記中的文本。結構化處理時通常應該不需要這個,但在處理「已部署」的 HTML 或是在以最小改變來重新生成輸入時可能會有用處(例如可以保留屬性間的空格等)。

下列方法將在遇到數據或者標記元素的時候被調用。他們需要在子類中重載。基類的實現中沒有任何實際操作(除了 handle_startendtag() ):

HTMLParser.handle_starttag 這個方法在標簽開始的時候被調用(例如: <div id="main"> )。 tag 參數是小寫的標簽名。 attrs 參數是一個 (name, value) 形式的列表,包含了所有在標記的 <> 括弧中找到的屬性。 name 轉換為小寫, value 的引號被去除,字元和實體引用都會被替換。比如,對於標簽 <a href="https://www.cwi.nl/"> ,這個方法將以下列形式被調用 handle_starttag('a', [('href', 'https://www.cwi.nl/')]) 。 html.entities 中的所有實體引用,會被替換為屬性值。

HTMLParser.handle_endtag(tag) 此方法被用來處理元素的結束標記(例如: </div> )。 tag 參數是小寫的標簽名。

HTMLParser.handle_startendtag(tag, attrs) 類似於 handle_starttag() , 只是在解析器遇到 XHTML 樣式的空標記時被調用( <tag ... /> )。這個方法能被需要這種特殊詞法信息的子類重載;默認實現僅簡單調用 handle_starttag() 和 handle_endtag() 。

HTMLParser.handle_data(data) 這個方法被用來處理任意數據(例如:文本節點和 <script>...</script> 以及 <style>...</style> 中的內容)。

HTMLParser.handle_entityref(name) 這個方法被用於處理 &name; 形式的命名字元引用(例如 > ),其中 name 是通用的實體引用(例如: 'gt' )。如果 convert_charrefs 為 True,該方法永遠不會被調用。

HTMLParser.handle_charref(name) 這個方法被用來處理 &#NNN; 和 &#xNNN; 形式的十進制和十六進制字元引用。例如, > 等效的十進制形式為 > ,而十六進制形式為 > ;在這種情況下,方法將收到 '62' 或 'x3E' 。如果 convert_charrefs 為 True ,則該方法永遠不會被調用。

HTMLParser.handle_comment(data) 這個方法在遇到注釋的時候被調用(例如: )。例如, 這個注釋會用 ' comment ' 作為參數調用此方法。

Internet Explorer 條件注釋(condcoms)的內容也被發送到這個方法,因此,對於 ``,這個方法將接收到 '[if IE 9]>IE9-specific content<![endif]' 。

HTMLParser.handle_decl(decl) 這個方法用來處理 HTML doctype 申明(例如 <!DOCTYPE html> )。 decl 形參為 <!...> 標記中的所有內容(例如: 'DOCTYPE html' )。

HTMLParser.handle_pi(data) 此方法在遇到處理指令的時候被調用。 data 形參將包含整個處理指令。例如,對於處理指令 <?proc color='red'> ,這個方法將以 handle_pi("proc color='red'") 形式被調用。它旨在被派生類重載;基類實現中無任何實際操作。

註解: HTMLParser 類使用 SGML 語法規則處理指令。使用 '?' 結尾的 XHTML 處理指令將導致 '?' 包含在 data 中。

HTMLParser.unknown_decl(data) 當解析器讀到無法識別的聲明時,此方法被調用。 data 形參為 <![...]> 標記中的所有內容。某些時候對派生類的重載很有用。基類實現中無任何實際操作。

因此,我們可以如此定義:

下面介紹如何解析 HTML 文檔。

解析一個文檔類型聲明:

解析一個具有一些屬性和標題的元素:

script 和 style 元素中的內容原樣返回,無需進一步解析:

解析注釋:

解析命名或數字形式的字元引用,並把他們轉換到正確的字元(注意:這 3 種轉義都是 '>' ):

填充不完整的塊給 feed() 執行, handle_data() 可能會多次調用(除非 convert_charrefs 被設置為 True ):

解析無效的 HTML (例如:未引用的屬性)也能正常運行:

④ Python 數據處理(十八)—— HTML 表格

頂級 read_html() 函數可以接受 HTML 字元串、文件或URL,並將 HTML 表解析為 pandas DataFrames 列表。

注意 :即使 HTML 內容中僅包含一個表, read_html 也會返回 DataFrame 對象的列表

讓我們看幾個例子

讀入 banklist.html 文件的內容,並將其作為字元串傳遞給 read_html

如果願意,您甚至可以傳入 StringIO 的實例

讀取 URL 並匹配包含特定文本的表

指定一個標題行(默認情況下 <th> 或 <td> 位於 <thead> 中的元素用於形成列索引,如果 <thead> 中包含多個行,那麼創建一個多索引)

指定索引列

指定要跳過的行數:

使用列表指定要跳過的行數( range 函數也適用)

指定一個 HTML 屬性

指定應轉換為 NaN 的值

指定是否保持默認的 NaN 值集

可以為列指定轉換器。這對於具有前導零的數字文本數據很有用。

默認情況下,將數字列轉換為數字類型,並且前導零會丟失。為了避免這種情況,我們可以將這些列轉換為字元串

組合上面的選項

讀取 to_html 的輸出(會損失浮點數的精度)

當只提供了一個解析器時,如果解析失敗, lxml 解析器會拋出異常,最好的方式是指定一個解析器列表

但是,如果安裝了 bs4 和 html5lib 並傳入 None 或 ['lxml','bs4'] ,則解析很可能會成功。

DataFrame 對象有一個實例方法 to_html ,它將 DataFrame 的內容呈現為 html 表格。

函數參數與上面描述的方法 to_string 相同。

columns 參數將限制顯示的列

float_format 參數控制浮點值的精度

bold_rows 默認情況下將使行標簽加粗,但你可以關閉它

classes 參數提供了給 HTML 表 設置 CSS 類的能力。

請注意,這些類附加到現有的 dataframe 類之後

render_links 參數提供了向包含 url 的單元格添加超鏈接的能力

最後, escape 參數允許您控制 HTML 結果中是否轉義了 "<" 、 ">" 和 "&" 字元(默認情況下為 True )。

因此,要獲得沒有轉義字元的 HTML ,請傳遞 escape=False

轉義

不轉義

在某些瀏覽器上這兩個 HTML 表可能並不會顯示出差異。

在頂級 pandas io 函數 read_html 中,用於解析 HTML 表的庫存在一些問題

⑤ python如何解析html中的轉義字元

用python寫個html的轉義字元轉換的函數,然後調用這個函數進行轉義字元處理即可。

html中的轉義字元並不多。

html常規轉義字元

⑥ Python運行出來的結果怎麼顯示到html上

我大概看了你所提問的內容,你的意思應該是想把從資料庫里所讀取到的內容,保存為html格式文件,方便查看。是這樣吧?

這里我簡單寫了這樣的代碼,代碼的思路是:

創建一個html後綴的文件,然後利用文件操作的相關知識寫入文件,完成後,可以直接打開file.html查看。

和你的思路能對上,你可以讀取資料庫內容,然後格式成html規范,寫入file.html文件。完成後,就可以打開file.html查看你的結果。

以下是我寫的代碼,你參考下:(代碼相對來說比較簡單,這只是給你一個思路,具體你可以依據這個方向進行修改完善)

python3.6環境

#該代碼運行於至少python3.6支持
#功能:把內容保存為html格式文件
withopen('file.html','w')asfile:#以w的模式打開file.html文件,不存在就新建
file.write('<html><body><tableborder=1><tr><th>a列表</th><th>b列表</th></tr><indent>輸出結果:')#使用write寫入字元串內容到file.html
foriinrange(10):#執行一個遍歷操作
a=i#i依次賦值給a,i內容為0,1,2,3,4,5,6,7,8,9
b=i**2#把i的值依次進行i的2次冪操作
file.write("<tr><td>"f'{a}'"</td><td>"f'{b}'"</td></tr>")#使用write寫入字元串內容到file.html
file.write('</indent></table></body></html>')#使用write寫入字元串內容到file.html

python3環境

#該代碼運行於python3
#功能:把內容保存為html格式文件
withopen('file.html','w')asfile:#以w的模式打開file.html文件,不存在就新建
file.write('<html><body><tableborder=1><tr><th>a列表</th><th>b列表</th></tr><indent>輸出結果:')#使用write寫入字元串內容到file.html
foriinrange(10):#執行一個遍歷操作
a=i#i依次賦值給a,i內容為0,1,2,3,4,5,6,7,8,9
b=i**2#把i的值依次進行i的2次冪操作
file.write('<tr><td>{}'.format(a)+'</td><td>{}'.format(b)+'</td></tr>')#使用write寫入字元串內容到file.html
file.write('</indent></table></body></html>')#使用write寫入字元串內容到file.html

純手工,如果對你有幫助望採納!

熱點內容
nm編程 發布:2023-02-02 06:24:49 瀏覽:920
學那些編程 發布:2023-02-02 06:24:40 瀏覽:531
sql2000sa密碼修改 發布:2023-02-02 06:19:30 瀏覽:736
apex為什麼一直啟動伺服器 發布:2023-02-02 06:14:13 瀏覽:577
石家莊漫咖啡無線密碼多少 發布:2023-02-02 06:12:37 瀏覽:298
對象存儲備份代碼 發布:2023-02-02 06:11:38 瀏覽:596
銀河戰艦怎麼存儲資源 發布:2023-02-02 06:10:52 瀏覽:875
水密碼護膚品適合什麼年齡段 發布:2023-02-02 06:08:58 瀏覽:241
汽車保險如何配置好 發布:2023-02-02 06:07:45 瀏覽:936
音箱如何配置最佳 發布:2023-02-02 06:07:37 瀏覽:15