在 Python 的 ElementTree 中提取标签后的文本 [英] Extracting text after tag in Python's ElementTree

查看:17
本文介绍了在 Python 的 ElementTree 中提取标签后的文本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是 XML 的一部分:

猫的图片</item>

提取标签很容易.就这样做:

et = xml.etree.ElementTree.fromstring(our_xml_string)img = et.find('img')

但是如何在它之后立即获取文本(猫的图片)?执行以下操作会返回一个空字符串:

print et.text

解决方案

Elements 有一个 tail 属性——所以你要求的不是 element.textelement.tail.

<预><代码>>>>导入 lxml.etree>>>root = lxml.etree.fromstring('''<root><foo>bar</foo>baz</root>''')>>>根[0]<0x145a3c0 处的元素 foo>>>>根[0].尾'巴兹'

或者,例如:

<预><代码>>>>et = lxml.etree.fromstring('''<item><img src="cat.jpg"/>一只猫的图片</item>''')>>>et.find('img').tail'猫的图片'

这也适用于普通的 ElementTree:

<预><代码>>>>导入 xml.etree.ElementTree>>>xml.etree.ElementTree.fromstring(... '''<item><img src="cat.jpg"/>猫的图片</item>'''... ).find('img').tail'猫的图片'

Here is a part of XML:

<item><img src="cat.jpg" /> Picture of a cat</item>

Extracting the tag is easy. Just do:

et = xml.etree.ElementTree.fromstring(our_xml_string)
img = et.find('img')

But how to get the text immediately after it (Picture of a cat)? Doing the following returns a blank string:

print et.text

解决方案

Elements have a tail attribute -- so instead of element.text, you're asking for element.tail.

>>> import lxml.etree
>>> root = lxml.etree.fromstring('''<root><foo>bar</foo>baz</root>''')
>>> root[0]
<Element foo at 0x145a3c0>
>>> root[0].tail
'baz'

Or, for your example:

>>> et = lxml.etree.fromstring('''<item><img src="cat.jpg" /> Picture of a cat</item>''')
>>> et.find('img').tail
' Picture of a cat'

This also works with plain ElementTree:

>>> import xml.etree.ElementTree
>>> xml.etree.ElementTree.fromstring(
...   '''<item><img src="cat.jpg" /> Picture of a cat</item>'''
... ).find('img').tail
' Picture of a cat'

这篇关于在 Python 的 ElementTree 中提取标签后的文本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆