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

Python用Pandas提取XML指定字段生成DataFrame报错如何解决?

报错原因

你遇到的报错是因为代码遍历了XML中所有层级的节点,包括<Structure>、<Field>这类不包含GAMEREF等目标字段的节点,当对这类节点调用find('GAMEREF')时会返回None,访问None的text属性就触发了AttributeError。

修改后可运行代码

import pandas as pd
import xml.etree.ElementTree as et

xtree = et.parse("gamedata.xml")
xroot = xtree.getroot()

df_cols = ["GAME REF","YEAR", "GAME NO", "WIN LOSS"]
rows = []

# 仅遍历Record节点,过滤所有无关节点
for record in xroot.iter('Record'):
    # 用findtext获取文本,不存在时自动返回None,避免报错
    s_gameref = record.findtext('GAMEREF')
    s_year = record.findtext('YEAR')
    s_game_no = record.findtext('GAMENO')
    s_winloss = record.findtext('WINLOSS')

    rows.append({
        "GAME REF": s_gameref,
        "YEAR": s_year, 
        "GAME NO": s_game_no,
        "WIN LOSS": s_winloss
    })

df = pd.DataFrame(rows, columns = df_cols)
# 按需开启类型转换,将对应字段转为数值型
# df = df.astype({"GAME REF": int, "YEAR": int, "GAME NO": int})

核心改动说明

  • 调整遍历范围,只处理<Record>节点,从根源避免查找不存在的标签
  • 替换取值方法为findtext(),自动处理字段缺失的场景,不会抛出属性不存在异常
  • 移除原代码赋值语句末尾多余的逗号,避免字段值被错误封装为元组类型

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 14:18:01