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

如何遍历API返回的多subTask并完整输出至Excel?

问题描述

现有通过API获取数据并写入Excel的Python代码,但目前仅能提取每个任务的第一个子任务,无法处理多子任务场景。示例需求:某任务包含Send Email、Check Email两个子任务,当前仅输出Send Email,需实现输出两个子任务(可写入同一单元格或不同单元格)。

原代码片段:

name = []
subTask = [] 

# 写入Excel
for i in range(len(nome)):
    sheet.cell(row=i+1, column=2).value = name[i]
    sheet.cell(row=i+1, column=8).value = subTask[i]

# 遍历API数据
for i in data['data']:
    name.append(i['name'])
    if i['subTask']:
      
      subTask.append(i['subTask'][0]['name']) 
     
    else:
      subTask.append('')

尝试修改的代码(未成功):

for i in data['data']:
    name.append(i['name'])
    if i['subTask']:
      startIndex = 0
      subTask.append(i['subTask'][startIndex]['name']) 
      print(subTask)
      startIndex += 1
    else:
      subTask.append('') 

解决方案

方案1:将所有子任务写入同一单元格(用分隔符拼接)

把每个任务的所有子任务名称用逗号(或其他分隔符)拼接成字符串,存入subTask列表,保持与name列表的一一对应关系,写入Excel时直接填充同一单元格。

修改后的API遍历代码:

name = []
subTask = [] 

# 遍历API数据
for item in data['data']:
    name.append(item['name'])
    if item['subTask']:
        # 用逗号拼接所有子任务名称
        sub_task_names = ', '.join([task['name'] for task in item['subTask']])
        subTask.append(sub_task_names)
    else:
        subTask.append('')

写入Excel的代码修正笔误后可直接使用:

# 写入Excel(原代码的`nome`应为`name`的笔误)
for i in range(len(name)):
    sheet.cell(row=i+1, column=2).value = name[i]
    sheet.cell(row=i+1, column=8).value = subTask[i]

方案2:将子任务写入不同行(主任务名称重复)

如果需要每个子任务单独占一行,主任务名称对应重复显示,需调整数据存储结构,把每个子任务与主任务配对成独立条目。

修改后的完整代码:

# 存储配对后的任务与子任务
task_subtask_pairs = []

# 遍历API数据
for item in data['data']:
    task_name = item['name']
    if item['subTask']:
        for task in item['subTask']:
            task_subtask_pairs.append( (task_name, task['name']) )
    else:
        # 无任务时子任务字段留空
        task_subtask_pairs.append( (task_name, '') )

# 写入Excel
for row_idx, (task_name, subtask_name) in enumerate(task_subtask_pairs, start=1):
    sheet.cell(row=row_idx, column=2).value = task_name
    sheet.cell(row=row_idx, column=8).value = subtask_name

内容的提问来源于stack exchange,提问作者Henrique Mazetti Ferraz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 16:12:52