在python中,我想访问某些元素的值。特别是,我在局部变量msg
中提取了以下结构:
<timestamp>2019-01-08T03:45:30-08:00</timestamp>
<stage>QUEUE</stage>
<text>Added to NSG run queue.</text>
我只想打印内容。以下代码有效
print(msg.find('timestamp').text, msg.find('stage').text, msg.find('text').text)
,但看起来好像开销很大。有没有更简单的方法可以做到这一点?
预期输出:
('2019-01-08T03:45:30-08:00', 'QUEUE', 'Added to NSG run queue.')
答案 0 :(得分:0)
尝试xmltodict。这使您可以将值添加为字典的values()
。
import xmltodict
s = """<xml>
<timestamp>2019-01-08T03:45:30-08:00</timestamp>
<stage>QUEUE</stage>
<text>Added to NSG run queue.</text>
</xml>
"""
print(", ".join(xmltodict.parse(s)['xml'].values()))
答案 1 :(得分:0)
您似乎想要的是所有标签的内容,可以使用标准的lib re
来实现。
import re
exp = '>(.*)</'
print(re.findall(exp, msg))
答案 2 :(得分:0)
您可以遍历msg
元素以获取其子元素。产生所需的输出:
from xml.etree import ElementTree as ET
XML = """
<msg>
<timestamp>2019-01-08T03:45:30-08:00</timestamp>
<stage>QUEUE</stage>
<text>Added to NSG run queue.</text>
</msg>"""
msg = ET.fromstring(XML)
print(tuple(c.text for c in msg)) # Tuple
print([c.text for c in msg]) # List