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

Python无pip依赖解析XML:关联书名与Score值,缺失值标记N/A

用Python原生库解析XML,正确关联书名与Score值(处理缺失项)

问题根源在于原代码是全局提取所有书名和所有Score值,导致无Score的书籍会错位匹配后续的Score。正确的做法是针对每个书籍节点单独处理,在单个节点的上下文内提取对应的数据,彻底避免错位。

示例XML

<library>
  <book>
    <title>Python编程:从入门到实践</title>
    <Score number="9.2"/>
  </book>
  <book>
    <title>流畅的Python</title>
  </book>
  <book>
    <title>Python Cookbook</title>
    <Score number="8.9"/>
  </book>
</library>

修正后的代码

使用Python标准库xml.etree.ElementTree,无需额外安装第三方包:

import xml.etree.ElementTree as ET

# 解析XML文件
tree = ET.parse('books.xml')
root = tree.getroot()

result = []

# 遍历每个book节点,独立提取单本书的数据
for book in root.findall('book'):
    # 获取书名
    title = book.find('title').text
    # 在当前book节点下查找Score元素
    score_element = book.find('Score')
    # 根据元素是否存在赋值,缺失则标记为N/A
    score_value = score_element.get('number') if score_element is not None else 'N/A'
    # 将当前书籍的信息加入结果列表
    result.append([title, score_value])

# 输出结果
for entry in result:
    print(entry)

输出结果

['Python编程:从入门到实践', '9.2']
['流畅的Python', 'N/A']
['Python Cookbook', '8.9']

核心逻辑说明

  • 遍历每个<book>节点,确保每本书的书名和Score在同一上下文提取
  • 使用book.find('Score')仅在当前书籍节点内查找Score,避免全局匹配导致的错位
  • 通过判断Score元素是否存在,用N/A标记缺失项,符合需求

内容的提问来源于stack exchange,提问作者Marcus Availo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 00:01:03