- Python進階編程:編寫更高效、優雅的Python代碼
- 劉宇宙 謝東 劉艷
- 521字
- 2021-04-30 12:39:38
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 "Jalapeño".' print(html.unescape(test_str)) text = 'The prompt is >>>' from xml.sax.saxutils import unescape unescape(text)
在生成HTML或者XML文本的時候,如何正確地轉換特殊標記字符是一個容易被忽視的細節,特別是當使用print()函數或者其他字符串格式化方法來產生輸出的時候。此時,使用html.escape()函數可以很容易地解決這類問題。
若想以其他方式處理文本,還可以使用其他工具函數,比如xml.sax.saxutils.unescapge(),不過應該先調研清楚怎樣使用一個合適的解析器再做選擇。比如,在處理HTML或XML文本時,使用某個解析模塊比如html.parse或xml.etree.ElementTree可以幫助自動處理一些相關的替換細節。
推薦閱讀
- PHP 從入門到項目實踐(超值版)
- Hands-On Microservices with Kotlin
- PHP+MySQL網站開發項目式教程
- 名師講壇:Spring實戰開發(Redis+SpringDataJPA+SpringMVC+SpringSecurity)
- 精通Linux(第2版)
- 學習OpenCV 4:基于Python的算法實戰
- ScratchJr趣味編程動手玩:讓孩子用編程講故事
- Java圖像處理:基于OpenCV與JVM
- Java7程序設計入門經典
- Practical Predictive Analytics
- 程序員的成長課
- C Primer Plus(第6版)中文版【最新修訂版】
- Zend Framework 2 Cookbook
- Web前端開發技術實踐指導教程
- 開發者測試