如何使用python仅解析XML中的某些信息

2024-06-17 13:43:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个简单的小问题,我只需要解析标记的一小部分。 因此,当分析“硬件版本”时,终端输出为:“TREE M-5TX IP67 1.00” 但我只想要1.00而不是“TREE M-5TX IP67”部件

有人知道怎么做吗? 请给我一个例子,我是一个初学者,因此任何帮助将是很好的。 如果我没有正确使用某些术语,我很抱歉

# open webpage and read values
xml_str = urllib.request.urlopen(url_str).read()

# Parses XML doc to String for Terminal output
xmldoc = minidom.parseString(xml_str)

# prints the order_number from the xmldoc
order_number = xmldoc.getElementsByTagName('order_number')
ord_nmr = order_number[0].firstChild.nodeValue

# prints the firmware_version from the xmldoc
firmware_version = xmldoc.getElementsByTagName('firmware_version')
frm_ver = firmware_version[0].firstChild.nodeValue

# prints the hardware_version from the xmldoc
hardware_version = xmldoc.getElementsByTagName('hardware_version')
hrd_ver = hardware_version[0].firstChild.nodeValue

# prints the mac_address from the xmldoc
mac_address = xmldoc.getElementsByTagName('mac_address')
mac_addr = mac_address[0].firstChild.nodeValue

print("Current device information: ")
print("Order-number: ",ord_nmr, "Software-version: ",frm_ver, "Hardware version: ",hrd_ver, "MAC address: ",mac_addr)

终端输出如下所示:

订单号:58183软件版本:1.1.0(内部版本:1)硬件版本:TREE M-5TX IP67 1.00 MAC地址:00:0F:9E:F3:F8:A0


1条回答
网友
1楼 · 发布于 2024-06-17 13:43:10

您尚未给出区分所需零件(在本特定情况下为“1.00”)与其他零件的规则或规范,您应该查看“hardware_version”的所有其他可能值,并定义一般规则

如果没有,我将假设您想要的部分由空格(一个或多个空格或制表符)与其余部分隔开,并且它是最后一段非空格文本。有了这样一个规则,就可以很容易地拆分您拥有的内容并检索最后一个元素:

# prints the hardware_version from the xmldoc
hardware_version = xmldoc.getElementsByTagName('hardware_version')
hrd_ver = hardware_version[0].firstChild.nodeValue
v = hrd_ver.split()[-1]

v将为“1.00”。默认情况下,split函数在空格上拆分,并返回一个字符串数组,我们只选择最后一个

相关问题 更多 >