我使用正则表达式来转换文本,但我想保留
HTML标记.
例如如果我想用“堆栈下溢”替换“堆栈溢出”,这应该工作
预期:如果输入是堆栈< soMetag>溢出< / soMetag>,我必须获得堆栈< soMetag> underflow< / soMetag> (即完成字符串替换,但是
标签还在那里……
例如如果我想用“堆栈下溢”替换“堆栈溢出”,这应该工作
预期:如果输入是堆栈< soMetag>溢出< / soMetag>,我必须获得堆栈< soMetag> underflow< / soMetag> (即完成字符串替换,但是
标签还在那里……
解决方法
在处理HTML时,请使用DOM库,而不是正则表达式:
> lxml:解析器,文档和HTML序列化程序.也可以使用BeautifulSoup和html5lib进行解析.
> BeautifulSoup:解析器,文档和HTML序列化程序.
> html5lib:解析器.它有一个序列化器.
> ElementTree:文档对象和XML序列化程序
> cElementTree:作为C扩展实现的文档对象.
> HTMLParser:解析器.
> Genshi:包括解析器,文档和HTML序列化程序.
> xml.dom.minidom:内置于标准库中的文档模型,html5lib可以解析该文档模型.
从http://blog.ianbicking.org/2008/03/30/python-html-parser-performance/被盗.
其中我会推荐lxml,html5lib和BeautifulSoup.