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

使用PETL包在Python中解析NBA赛事XML代码的技术问询

使用PETL解析NBA赛事XML数据的指南

没问题,我来带你一步步用PETL解析这段NBA赛事XML数据,操作起来很直观的:

第一步:安装PETL包

首先得确保你已经安装了PETL,打开终端或者命令行执行这个命令:

pip install petl

第二步:准备XML数据

先把你提供的XML片段补全成格式正确的完整XML(XML要求标签必须闭合),比如保存为nba_roster.xml文件:

return (<Msg_file LeagueID="00" League="NBA" Season="2012-13" SeasonType="Regular Season"> 
<Game Number="0"> 
<Msg_Roster> 
<Player_info Person_id="2734" Team_id="1610612737" Player_status="A" First_name="Devin" Last_name="Harris" Jersey_number="34" Birth_date="February 27, 1983" Height="6'3&amp;quot;" Weight="192" Position="G" School="Wisconsin" SchoolType="College" Country="USA" Display_affiliation="Wisconsin"/>
)

</Msg_Roster>

</Msg_file>

第三步:编写解析代码

PETL提供了fromxml函数专门处理XML数据,我们可以用它提取球员信息:

基础解析示例

import petl as etl

# 从XML文件读取,指定要提取的球员节点和属性
player_table = etl.fromxml(
    'nba_roster.xml',
    '//Player_info',  # XPath选择器,定位所有Player_info节点
    ['Person_id', 'Team_id', 'First_name', 'Last_name', 'Jersey_number', 'Position', 'Height']
)

# 打印查看解析结果
print(etl.look(player_table))

处理特殊字符(比如Height里的转义引号)

注意到Height字段里的&amp;quot;是HTML转义的双引号,我们可以用PETL的convert函数处理:

# 转换Height字段,替换转义字符为实际引号
cleaned_table = etl.convert(player_table, 'Height', lambda x: x.replace('&amp;quot;', '"'))

# 查看处理后的结果
print(etl.look(cleaned_table))

直接解析XML字符串(无需保存文件)

如果你的XML是字符串形式,不用存文件也能处理:

import io
import petl as etl

xml_str = '''<Msg_file LeagueID="00" League="NBA" Season="2012-13" SeasonType="Regular Season"> 
<Game Number="0"> 
<Msg_Roster> 
<Player_info Person_id="2734" Team_id="1610612737" Player_status="A" First_name="Devin" Last_name="Harris" Jersey_number="34" Birth_date="February 27, 1983" Height="6'3&amp;quot;" Weight="192" Position="G" School="Wisconsin" SchoolType="College" Country="USA" Display_affiliation="Wisconsin"/>
</Msg_Roster>
</Game>
</Msg_file>'''

# 用StringIO把字符串转为文件对象
player_table = etl.fromxml(
    io.StringIO(xml_str),
    '//Player_info',
    ['Person_id', 'First_name', 'Last_name', 'Position', 'Birth_date']
)

print(etl.look(player_table))

第四步:后续数据处理(可选)

解析完成后,你可以用PETL的其他功能处理数据,比如导出到CSV方便查看:

# 导出处理好的球员数据到CSV文件
etl.tocsv(cleaned_table, 'nba_players_2012-13.csv')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:09:07