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

如何将Sleeper API球员字典数据整洁导出为规范CSV?

解决方案

1. 修复当前CSV导出逻辑

players.get_all_players()返回的是以球员ID为键、球员信息字典为值的嵌套字典,你之前的代码直接把所有ID作为表头,用writerow写入整份数据,导致每个ID对应的单元格里塞了完整的球员字典。要改成每行一条球员数据,需要先转换数据结构:

替换导出部分的代码(从toCSV = output开始):

# 转换嵌套字典为球员信息列表,将球员ID加入每个球员的信息字典
player_list = []
for player_id, player_info in output.items():
    player_info['player_id'] = player_id  # 保留球员ID字段
    player_list.append(player_info)

# 收集所有球员的字段作为CSV表头(兼容不同球员的字段差异)
all_fields = set()
for player in player_list:
    all_fields.update(player.keys())
all_fields = sorted(all_fields)  # 排序让表头更规整

# 写入CSV文件
csv_file_path = os.path.join(parent_dir, file, f"{name}.csv")
with open(csv_file_path, 'w', encoding='utf8', newline='') as output_file:
    fc = csv.DictWriter(output_file, fieldnames=all_fields)
    fc.writeheader()
    fc.writerows(player_list)  # 用writerows批量写入所有球员,而非单条writerow

2. 更优实现方案

用pandas库处理数据会更简洁高效,自动处理字段缺失、表头生成等问题,后续同步其他表格也更方便:

步骤1:安装pandas

pip install pandas

步骤2:替换导出逻辑

把原有的CSV导出代码替换为:

import pandas as pd

# 将嵌套字典转换为DataFrame,把球员ID从索引转为单独字段
df = pd.DataFrame.from_dict(output, orient='index').reset_index(names='player_id')

# 导出为CSV(index=False避免写入默认索引列)
csv_file_path = os.path.join(parent_dir, file, f"{name}.csv")
df.to_csv(csv_file_path, index=False, encoding='utf-8')

额外优化建议

  • 缓存数据:get_all_players()数据量大且更新频率低,可将数据缓存到本地JSON/CSV文件,下次运行优先读取缓存,避免重复请求导致卡顿。
  • 同步其他表格:用pandas可以直接读取目标电子表格(支持Excel/CSV),然后合并球员数据后再导出,实现自动同步。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:45:48