Python 相当于靓汤';是否在lxml中使用s renderContents()方法?
在lxml中是否有与Beauty Soup的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
标记.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段页脚'
>>>
阿里