python – 在lxml中相当于Beautiful Soup的renderContents()方法?

在lxml中是否有相当于Beautiful Soup的tag.renderContents()方法?

我已经尝试过使用element.text,但是它不会呈现子标记,也不会呈现’.join(元素中的子项为etree.tostring(child)),但这不会呈现子文本.我能找到的最接近的是etree.tostring(element),但它会呈现元素的开始和结束标记,这是我不想要的.

还有另一种我忽视的方法(或另一种方法来实现这一目标)?

最佳答案
你最初的想法就是你最初的想法. element.text为您提供元素的第一个文本子项,列表理解为您提供其他所有内容.如果将两个字符串连接在一起,就可以得到您想要的内容:

>>> xmlstr = "<sec>header <p>para 0</p> text <p>para 1</p> footer</sec>"
>>> element = etree.fromstring(xmlstr)
>>>
>>> element.text + "".join(map (etree.tostring, element))
'header <p>para 0</p> text <p>para 1</p> footer'
>>>

阿里.

转载注明原文:python – 在lxml中相当于Beautiful Soup的renderContents()方法? - 代码日志