官术网_书友最值得收藏!

2.2.8 處理HTML和XML文本

在處理Web相關業務,特別是處理網頁文本時,經常需要將HTML或者XML實體如&entity或&#code替換為對應的文本,或需要轉換文本中特定的字符(比如<、>或&)。

如果想替換文本字符串中的“<”或者“>”,可使用html.escape()函數實現,示例如下:


test_str = 'Elements are written as "<tag>text</tag>".'
import html
print(test_str)

print(html.escape(test_str))
print(html.escape(test_str, quote=False))

如果正在處理的是ASCII文本,并且想將非ASCII文本對應的編碼實體嵌入ASCII文本,可以給某些I/O函數傳遞參數errors='xmlcharrefreplace'來達到目的,示例如下:


test_str = 'Spicy Jalape?o'
print(test_str.encode('ascii', errors='xmlcharrefreplace'))

為了替換文本中的編碼實體,需要使用另外一種方法。如果正在處理的是HTML或者XML文本,試著先使用一個合適的HTML或者XML解析器。通常情況下,這些工具會自動替換這些編碼值。

如果接收到一些含有編碼值的原始文本,需要手動去做替換,通常只需要使用HTML或者XML解析器的一些相關工具函數/方法,示例如下:


test_str = 'Spicy &quot;Jalape&#241;o&quot.'
print(html.unescape(test_str))

text = 'The prompt is &gt;&gt;&gt;'
from xml.sax.saxutils import unescape
unescape(text)

在生成HTML或者XML文本的時候,如何正確地轉換特殊標記字符是一個容易被忽視的細節,特別是當使用print()函數或者其他字符串格式化方法來產生輸出的時候。此時,使用html.escape()函數可以很容易地解決這類問題。

若想以其他方式處理文本,還可以使用其他工具函數,比如xml.sax.saxutils.unescapge(),不過應該先調研清楚怎樣使用一個合適的解析器再做選擇。比如,在處理HTML或XML文本時,使用某個解析模塊比如html.parse或xml.etree.ElementTree可以幫助自動處理一些相關的替換細節。

主站蜘蛛池模板: 台湾省| 喀喇沁旗| 安达市| 三门县| 湘阴县| 广河县| 西宁市| 田东县| 开封市| 柘城县| 冷水江市| 易门县| 南江县| 荃湾区| 罗源县| 台东县| 韩城市| 含山县| 福建省| 改则县| 福州市| 万宁市| 斗六市| 大庆市| 高雄市| 唐海县| 肇源县| 武城县| 格尔木市| 志丹县| 鸡泽县| 松江区| 嵊州市| 诸城市| 彭山县| 特克斯县| 务川| 景德镇市| 惠安县| 布尔津县| 忻州市|