Python 在字符串中处理html 和xml
问题:
想将HTML 或者XML 实体如&entity; 或&#code; 替换为对应的文本。再者,你需要转换文本中特定的字符(比如<, >, 或&)。
解决方案:
①想替换文本字符串中的‘<’ 或者‘>’ ,使用html.escape() 函数可以很容易的完成。
>>> s = 'Elements are written as "<tag>text</tag>".'
>>> import html
>>> print(s)
Elements are written as "<tag>text</tag>".
>>> print(html.escape(s))
Elements are written as "<tag>text</tag>".
>>> # Disable escaping of quotes
>>> print(html.escape(s, quote=False))
Elements are written as "<tag>text</tag>".
②想将非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 在字符串中处理html 和xml的更多相关文章
- python之字符串中有关%d,%2d,%02d的问题
python之字符串中有关%d,%2d,%02d的问题 在python中,通过使用%,实现格式化字符串的目的.(这与c语言一致) 其中,在格式化整数和浮点数时可以指定是否补0和整数与小数的位数. 首先 ...
- python 判断字符串中是否只有中文字符
python 判断字符串中是否只有中文字符 学习了:https://segmentfault.com/q/1010000007898150 def is_all_zh(s): for c in s: ...
- python判断字符串中是否包含子字符串
python判断字符串中是否包含子字符串 s = '1234问沃尔沃434' if s.find('沃尔沃') != -1: print('存在') else: print('不存在' ...
- python 统计字符串中指定字符出现次数的方法
python 统计字符串中指定字符出现次数的方法: strs = "They look good and stick good!" count_set = ['look','goo ...
- Python 去除字符串中的空行
Python 去除字符串中的空行 mystr = 'adfa\n\n\ndsfsf' print("".join([s for s in mystr.splitlines(True ...
- Python访问字符串中的值
Python访问字符串中的值: 1.可以使用索引下标进行访问,索引下标从 0 开始: # 使用索引下标进行访问,索引下标从 0 开始 strs = "ABCDEFG" print( ...
- Python 访问字符串中的值
Python 访问字符串中的值 Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用.高佣联盟 www.cgewang.com Python 访问子字符串,可以使用方括号来 ...
- [Python正则表达式] 字符串中xml标签的匹配
现在有一个需求,比如给定如下数据: 0-0-0 0:0:0 #### the 68th annual golden globe awards #### the king s speech earns ...
- Python之在字符串中处理html和xml
需求:替换文本字符串中的 ‘<’ 或者 ‘>’ ,使用 html.escape() 函数 import html s="<div>你好<div>" ...
随机推荐
- Python 收集主机信息
写一个 python 脚本,收集以下信息 ( CentOS 6 ) : IP地址 <ip> 主机名 <hostname> 操作系统版本 <osver> ...
- Effective C++ —— 资源管理(三)
条款13 : 以对象管理资源 假设有如下代码: Investment* createInvestment(); //返回指针,指向Investment继承体系内的动态分配对象,调用者有责任删除它 vo ...
- AFNetworking 上传文件
本文转载至 http://blog.csdn.net/hmt20130412/article/details/36487055 文件上传AFNetworking @第一种:我的 #pragma mar ...
- c++11——type_traits 类型萃取
一. c++ traits traits是c++模板编程中使用的一种技术,主要功能: 把功能相同而参数不同的函数抽象出来,通过traits将不同的参数的相同属性提取出来,在函数中利用这些用tr ...
- 学习Ruby你需要了解的相关知识(rvm, gem, bundle, rake, rails等)
这篇文章主要介绍了学习Ruby你需要了解的相关知识(rvm, gem, bundle, rake, rails等),需要的朋友可以参考下 Ruby 这个就不用多说了 RVM 用于帮你安装Rub ...
- $.when()方法监控ajax请求获取到的数据与普通ajax请求回调获取到的数据的不同
1.$.when(ajax).done(function(data)}); 2.$.ajax().done(function(data){}); 1中的data被封装进一个对象[data, " ...
- ExcelUtil工具类
import com.google.common.base.Strings;import com.jianwu.util.excel.annotation.ExcelAttribute;import ...
- MySQL命令行基本命令操作
进入命令模式后, 显示所有数据库 show databases; 选定某个数据库 use 数据库名; 创建数据库 create database 数据库名; 删除数据库 drop table 数据库名 ...
- LISTAGG
LISTAGG(measure_expr [, 'delimiter']) WITHIN GROUP (order_by_clause) [OVER query_partition_clause] S ...
- [ASP.NET 大牛之路]03 - C#高级知识点概要(2) - 线程和并发
目录: 1.线程简单使用 2.并发和异步的区别 3.并发控制—锁 4.线程的通信机制 5.线程池中的线程 6.案例:支持并发的异步日志组件 7.结束 1.线程的简单使用---------------- ...