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
相关产品推荐
相关产品推荐

