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

Python解析XML转CSV时嵌套label标签数据提取失败问题咨询

问题原因

  • 你使用的XPath语法错误:xml.etree.ElementTree 不支持 label/0/text 这种按数字索引的路径写法,要获取第N个label节点需要用findall先获取所有label节点再按索引取值,或者用XPath谓语label[1]/text(注意索引从1开始)
  • 你提取节点后没有调用.text属性获取文本值,导致存的是Element对象而非实际内容
  • 代码里存在变量名错误:字典赋值时用了未定义的Code变量,应该是之前定义的Player
  • 直接按索引取label的风险很高,如果后续XML中label的顺序发生变化,会导致字段匹配错误,更稳妥的方式是遍历所有label节点,根据group的内容匹配对应的text值

修正后代码(推荐:按group匹配,不受label顺序影响)

import xml.etree.ElementTree as Xet
import pandas as pd
  
cols = ["ID", "Start", "End", "Player", "Team", "Action","Half","x","y"]
rows = []
  
# 解析XML文件
xmlparse = Xet.parse(r'/content/gdrive/MyDrive/Celtic_Dundee.xml')
root = xmlparse.getroot()
for instance in root:
    # 提取基础字段
    ID = instance.find("ID").text
    Start = instance.find("start").text
    End = instance.find("end").text
    Player = instance.find("code").text
    x = instance.find("pos_x").text
    y = instance.find("pos_y").text
    
    # 遍历label节点,按group匹配对应值
    label_map = {}
    for label in instance.findall("label"):
        group = label.find("group").text
        text = label.find("text").text
        label_map[group] = text
    
    # 从匹配字典中取对应值
    Team = label_map.get("Team")
    Action = label_map.get("Action")
    Half = label_map.get("Half")
    
    # 插入行数据
    rows.append({
        "ID": ID,
        "Start": Start,
        "End": End,
        "Player": Player,
        "Team": Team,
        "Action": Action,
        "Half": Half,
        "x": x,
        "y": y
    })
  
df = pd.DataFrame(rows, columns=cols)
# 输出到CSV
df.to_csv('output.csv', index=False)

简易修正版(按索引取,仅适用于label顺序固定的场景)

如果确认所有instance下的label顺序固定为Team、Action、Half,也可以直接修改原代码中label和坐标的取值逻辑:

Team = instance.findall("label")[0].find("text").text
Action = instance.findall("label")[1].find("text").text
Half = instance.findall("label")[2].find("text").text
x = instance.find("pos_x").text
y = instance.find("pos_y").text

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 18:39:05