Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.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 相当于靓汤';是否在lxml中使用s renderContents()方法?_Python_Xml_Rendering_Beautifulsoup_Lxml - Fatal编程技术网

Python 相当于靓汤';是否在lxml中使用s renderContents()方法?

Python 相当于靓汤';是否在lxml中使用s renderContents()方法?,python,xml,rendering,beautifulsoup,lxml,Python,Xml,Rendering,Beautifulsoup,Lxml,在lxml中是否有与Beauty Soup的标记.renderContents()方法等价的方法 我尝试过使用元素.text,但它不呈现子标记,也不呈现'.join(元素中的子元素的etree.tostring(child)),但它不呈现子文本。我能找到的最接近的是etree.tostring(element),但是它呈现了element的开始和结束标记,我不想要这些 有没有其他我忽略的方法(或实现这一点的替代方法)?一个黑客解决方案: from lxml import etree def re

在lxml中是否有与Beauty Soup的
标记.renderContents()方法等价的方法

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

有没有其他我忽略的方法(或实现这一点的替代方法)?

一个黑客解决方案:

from lxml import etree
def render_contents(element):
    """
    Surely there is a safe lxml built-in for this...
    """
    tagname = element.tag
    return re.sub('</%s>\s*$' % tagname, '',
                  re.sub(r'^<%s(\s+\w+=".*?")*?>' % tagname,
                         '', etree.tostring(element))).strip()
从lxml导入etree
def渲染_内容(元素):
"""
肯定有一个安全的lxml内置于此。。。
"""
tagname=element.tag
返回re.sub('\s*$'%tagname',',
re.sub(r'^'%2标记名,
'',etree.tostring(元素)).strip()
编辑
真的,没有比这更好的方法了吗?

你的原始想法已经基本实现了
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'
>>>
>>xmlstr=“页眉第0段

文本第1段

页脚” >>>element=etree.fromstring(xmlstr) >>> >>>element.text+“”.join(映射(etree.tostring,element)) '页眉第0段

正文第1段

页脚' >>>
阿里