假设我有一个这样的HTML代码段:
<div>
Hello <strong>There</strong>
<div>I think <em>I am</em> feeing better!</div>
<div>Don't you?</div>
Yup!
</div>
Run Code Online (Sandbox Code Playgroud)
删除周围根元素的最佳/最强大的方法是什么,所以它看起来像这样:
Hello <strong>There</strong>
<div>I think <em>I am</em> feeing better!</div>
<div>Don't you?</div>
Yup!
Run Code Online (Sandbox Code Playgroud)
我试过像这样使用lxml.html:
lxml.html.fromstring(fragment_string).drop_tag()
但那只能给我"你好",我觉得这很有道理.有更好的想法吗?
这在lxml(或ElementTree)中有点奇怪.你必须这样做:
def inner_html(el):
return (el.text or '') + ''.join(tostring(child) for child in el)
Run Code Online (Sandbox Code Playgroud)
请注意,lxml(和ElementTree)没有特殊的方式来表示除了以单个元素为根的文档,但.drop_tag()如果<div>不是根元素,则可以按照您的要求工作.