You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何从XML解析得到的未知标签行中分别提取标签名与内容

实现方法

不用预先知道标签名,两种方案都可以实现需求:

方案1:正则匹配(不需要提前知道标签名)

re.search不需要预先知道标签名,你可以用捕获组+反向引用的正则规则,自动匹配开闭标签并提取内容:

  • 正则规则:r'<([^>]+)>([^<]+)</\1>'
    • 第一个捕获组([^>]+):匹配<和>之间的所有字符,自动提取标签名
    • 第二个捕获组([^<]+):匹配开闭标签之间的所有内容
    • \1是反向引用,保证闭合标签和开头标签完全一致,避免匹配错误
  • 示例代码:
import re
xml_str = "<ID>0b10-bd-59-ac-bac</ID>"
res = re.search(r'<([^>]+)>([^<]+)</\1>', xml_str)
if res:
    tag = res.group(1)
    content = res.group(2)
    print(tag) # 输出 ID
    print(content) # 输出 0b10-bd-59-ac-bac

如果标签带有属性(比如<ID type="hex">xxx</ID>),可以把正则调整为r'<([^\s>]+)[^>]*>([^<]+)</\1>',自动过滤属性部分。

方案2:XML专用解析库(更稳妥,推荐)

如果要处理的XML格式复杂、或者有大量解析需求,优先用Python内置的XML解析库,容错性比正则高很多,不会因为换行、属性等格式变体出错:

import xml.etree.ElementTree as ET
xml_str = "<ID>0b10-bd-59-ac-bac</ID>"
node = ET.fromstring(xml_str)
tag = node.tag
content = node.text

内容的提问来源于stack exchange,提问作者Miss.Pepper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 02:27:02