Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从HTML LXML中删除注释_Python_Xml_Lxml - Fatal编程技术网

Python 如何从HTML LXML中删除注释

Python 如何从HTML LXML中删除注释,python,xml,lxml,Python,Xml,Lxml,如何使用lxml删除这样的评论而不丢失苹果iphone5s的值(灰色,16gb) 苹果iPhone 5s(灰色,16 GB) 使用正则表达式。 import re a = '''<h1 class="_3eAQiD" data-reactid="144"> <!-- react-text: 145 --> Apple iPhone 5s (Space Grey, 16 GB) <!-- /react-text --> </h1>'''

如何使用lxml删除这样的评论而不丢失苹果iphone5s的值(灰色,16gb)


苹果iPhone 5s(灰色,16 GB)

使用正则表达式。

import re    

a = '''<h1 class="_3eAQiD" data-reactid="144">
<!-- react-text: 145 -->
Apple iPhone 5s (Space Grey, 16 GB)
<!-- /react-text -->
</h1>'''    

print re.sub("(<!--.*?-->)", "", a, flags=re.MULTILINE)

正则表达式太慢了。将检查LXML实现并revert.regex以解析html/xml:现在您有两个问题。您不应该自行构建解析器。可能stackoverflow需要改进其相关问题算法。甚至没有通过谷歌找到。谢谢,没有复制品。XML和HTML的答案是不同的。一个使用
etree.XMLParser
,另一个使用
etree.HTMLParser
html.HTMLParser
import re    

a = '''<h1 class="_3eAQiD" data-reactid="144">
<!-- react-text: 145 -->
Apple iPhone 5s (Space Grey, 16 GB)
<!-- /react-text -->
</h1>'''    

print re.sub("(<!--.*?-->)", "", a, flags=re.MULTILINE)
<h1 class="_3eAQiD" data-reactid="144">

Apple iPhone 5s (Space Grey, 16 GB)

</h1>
import  lxml.etree as et
x = et.fromstring(a, parser=et.HTMLParser(remove_comments=True))
print(et.tostring(x))