在Python中,如何删除HTML片段中的"root"标记?

Chu*_* Wu 2 html python

假设我有一个这样的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()

但那只能给我"你好",我觉得这很有道理.有更好的想法吗?

Ian*_*ing 6

这在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>不是根元素,则可以按照您的要求工作.