Python 在字串中處理html 和xml

2022-03-15 17:20:24 字數 1540 閱讀 8024

問題:

想將html 或者xml 實體如&entity; 或&#code; 替換為對應的文字。再者,你需要轉換文字中特定的字元(比如<, >, 或&)。

解決方案:

①想替換文字字串中的『<』 或者『>』 ,使用html.escape() 函式可以很容易的完成。

>>> s = 'elements are written as "text".'

>>> import html

>>> print(s)

elements are written as "text".

>>> print(html.escape(s))

elements are written as "text".

>>> # disable escaping of quotes

>>> print(html.escape(s, quote=false))

elements are written as "text".

②想將非ascii 文字對應的編碼實體嵌入進去,可以給某些i/o 函式傳遞引數errors='xmlcharrefreplace' 來達到這個目。

>>> s = 'spicy jalapeño'

>>> s.encode('ascii', errors='xmlcharrefreplace')

b'spicy jalapeño'

>>>

③為了替換文字中的編碼實體,你需要使用另外一種方法。如果你正在處理html或者xml 文字,試著先使用乙個合適的html 或者xml 解析器。通常情況下,這些工具會自動替換這些編碼值,你無需擔心。有時候,如果你接收到了一些含有編碼值的原始文字,需要手動去做替換,通常你只需要使用html 或者xml 解析器的一些相關工具函式/方法即可。

>>> s = 'spicy "jalapeño".'

>>> from html.parser import htmlparser

>>> p = htmlparser()

>>> p.unescape(s)

'spicy "jalapeño".'

>>>

>>> t = 'the prompt is >>>'

>>> from xml.sax.saxutils import unescape

>>> unescape(t)

'the prompt is >>>'

>>>

④在生成html 或者xml 文字的時候,如果正確的轉換特殊標記字元是乙個很容易被忽視的細節。特別是當你使用print() 函式或者其他字串格式化來產生輸出的時候。使用像html.escape() 的工具函式可以很容易的解決這類問題。如果你想以其他方式處理文字, 還有一些其他的工具函式比如xml.sax.saxutils.unescapge() 可以幫助你。然而,你應該先調研清楚怎樣使用乙個合適的解析器。比如,如果你在處理html 或xml 文字,使用某個解析模組比如html.parse 或xml.etree.elementtree 已經幫你自動處理了相關的替換細節。

Python中處理JSON字串

今天在使用python 中的json物件轉換碰到乙個問題 接收乙個post的json字串 s 使用python自帶的json庫 import json a json.loads s traceback most recent call last file line 1,in file usr lib...

python中字串的處理

單引號,雙引號括起來的,就是乙個字串 三引號括起來可以換行列印 hello,world!表示轉義,n 換行,t製表符,同理字串中要出現 同樣要在前面加轉義 另外轉義字元 可以在後面加八進位制或者十六進製制的數來表示字元,也可以用unicode字元編碼表示字元 如果不希望 表示轉義,則在前面加上r 字...

Python 字串處理

python endswith 方法用於判斷字串是否以指定字尾結尾,如果以指定字尾結尾返回 true 否則返回 false 可選引數 start 與 end 為檢索字串的開始與結束位置。語法 endswith 方法語法 str.endswith suffix start end 引數 返回值 如果字...