Python對HTML跳脫字元進行反轉義

Alin2477305449發表於2023-03-31

什麼是跳脫字元

在 HTML 中 <、>、& 等字元有特殊含義(<,> 用於標籤中,& 用於轉義),他們不能在 HTML 程式碼中直接使用,如果要在網頁中顯示這些符號,就需要使用 HTML 的跳脫字元串(Escape Sequence),例如 < 的跳脫字元是 <,瀏覽器渲染 HTML 頁面時,會自動把轉移字串換成真實字元。

跳脫字元(Escape Sequence)由三部分組成:第一部分是一個 & 符號,第二部分是實體(Entity)名字,第三部分是一個分號。 比如,要顯示小於號(<),就可以寫< 。

顯示字元    說明  跳脫字元

<   小於  <

空格   

<   小於  <

>   大於  >

&   &符號 &

"   雙引號 "

©   版權  ©

®   已註冊商標   ®

Python 跳脫字元串反轉義

用 Python 來處理跳脫字元串有多種方式,而且 py2 和 py3 中處理方式不一樣,在 python2 中,反轉義的模組是 HTMLParser。

1
2
3
4
# Python2
import  HTMLParser
>>> HTMLParser().unescape( 'param=p1&amp;param=p2' )
'param=p1&param=p2'

Python3 HTMLParser 模組遷移到了 html.parser

1
2
3
4
# Python3
>>>  from  html.parser  import  HTMLParser
>>> HTMLParser().unescape( 'param=p1&amp;param=p2' )
'param=p1&param=p2'

到 python3.4 以後的版本,在 html 模組新增了 unescape 方法。

1
2
3
4
# Python3.4
>>>  import  html
>>> html.unescape( 'param=p1&amp;param=p2' )
'param=p1&param=p2'

推薦最後一種寫法,因為 HTMLParser.unescape 方法在 Python3.4 就已經被廢棄掉不推薦使用了,意味著之後的版本會被徹底移除。

另外,xml的sax模組也有支援反轉義的函式

1
2
3
>>>  from  xml.sax.saxutils  import  unescape
>>> unescape( 'param=p1&amp;param=p2' )
'param=p1&param=p2'


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952502/viewspace-2942934/,如需轉載,請註明出處,否則將追究法律責任。

相關文章