如何遍历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
相关产品推荐
相关产品推荐

