Coze 流程编排节点中增加代码块指南

概述

在 Coze(扣子)平台的流程编排中,代码块节点是一个强大的功能,允许开发者通过编写代码来实现自定义逻辑、数据处理和业务功能。本文档详细介绍如何在流程编排中添加和使用代码块节点。


一、代码块节点简介

1.1 什么是代码块节点

代码块节点是 Coze 流程编排中的一个特殊节点,允许用户编写代码来执行自定义逻辑,支持多种编程语言和数据处理操作。

1.2 代码块节点的作用

功能 说明 应用场景
数据处理 对输入数据进行转换、过滤、计算 数据清洗、格式转换
业务逻辑 实现复杂的业务规则和判断 条件判断、流程控制
API 调用 调用外部 API 或内部服务 数据获取、服务集成
算法实现 实现特定算法或计算 数据分析、机器学习
工具函数 封装可复用的工具函数 字符串处理、日期计算

二、添加代码块节点的方法

2.1 方法一:从节点库添加

打开流程编排

点击节点库

搜索代码块

拖拽到画布

配置代码内容

连接输入输出

步骤:

  1. 打开流程编排界面

    • 进入 Coze 平台
    • 选择或创建智能体
    • 点击"流程编排"或"编排"标签
  2. 查找代码块节点

    • 在左侧节点库中搜索"代码块"或"Code Block"
    • 或浏览节点分类找到"代码"类别
  3. 添加节点

    • 将代码块节点拖拽到画布上
    • 或点击节点库中的代码块图标

2.2 方法二:从快捷菜单添加

右键画布空白处

选择插入节点

选择代码块

节点添加到画布

步骤:

  1. 在流程编排画布上右键点击
  2. 选择"插入节点"或"添加节点"
  3. 从菜单中选择"代码块"或"Code Block"

2.3 方法三:从已有节点转换

操作 说明 适用场景
替换节点 将现有节点替换为代码块节点 需要将简单节点升级为代码逻辑
插入节点 在两个节点之间插入代码块 需要在流程中添加处理逻辑

三、配置代码块节点的步骤

3.1 完整配置流程

添加代码块节点

设置节点名称

选择编程语言

编写代码

配置输入变量

配置输出变量

测试运行

是否通过?

保存配置

连接其他节点

3.2 详细步骤说明

步骤 1:设置节点基本信息
配置项 说明 示例 必填
节点名称 代码块节点的显示名称 “数据处理”、“计算星期几” ✅ 是
节点描述 节点的功能说明 “处理天气数据,添加星期几字段” ❌ 否
节点图标 节点的显示图标 可选择预设图标 ❌ 否

在这里插入图片描述

步骤 2:选择编程语言
语言 说明 适用场景 支持版本
Python 最常用的脚本语言 数据处理、算法实现、API 调用 Python 3.x
JavaScript Web 开发语言 前端逻辑、JSON 处理 ES6+
Java 企业级开发语言 复杂业务逻辑 Java 8+
其他 根据平台支持 根据实际需求 -

选择建议:

  • Python:推荐用于数据处理、算法实现
  • JavaScript:推荐用于 JSON 处理、字符串操作
  • Java:推荐用于复杂业务逻辑

在这里插入图片描述

在这里插入图片描述

步骤 3:编写代码

代码编辑器功能:

功能 说明 快捷键
语法高亮 根据语言显示不同颜色 自动
代码补全 智能提示代码建议 Tab
错误检查 实时检查语法错误 自动
格式化 自动格式化代码 Shift+Alt+F
折叠代码 折叠代码块 Ctrl+Shift+[

代码模板示例:

# Python 代码块模板
# 在这里,您可以通过 'args'  获取节点中的输入变量,并通过 'ret' 输出结果
# 'args' 已经被正确地注入到环境中
# 下面是一个示例,首先获取节点的全部输入参数params,其次获取其中参数名为'input'的值:
# params = args.params; 
# input = params['input'];
# 下面是一个示例,输出一个包含多种数据类型的 'ret' 对象:
# ret: Output =  { "name": '小明', "hobbies": ["看书", "旅游"] };

async def main(args: Args) -> Output:
    params = args.params

        # 处理 JSON 数据
    result = process_weather_json(params['input'])
    
    # 输出处理后的 JSON(格式化输出)
    print("处理后的 JSON 数据:")
    print(json.dumps(result, ensure_ascii=False, indent=2))
    
    # 构建输出对象
    ret: Output = {
        "key0": result # 拼接两次入参 input 的值
    }
    return ret
步骤 4:配置输入变量
配置项 说明 示例 必填
变量名 代码中使用的变量名 input_data, weather_json ✅ 是
变量类型 变量的数据类型 String, Object, Array, Number ✅ 是
默认值 变量的默认值 {}, [], "" ❌ 否
描述 变量的说明 “天气数据 JSON 字符串” ❌ 否

输入变量配置示例:

上游节点输出

代码块节点

变量: input_data
类型: Object

代码中使用

步骤 5:配置输出变量
配置项 说明 示例 必填
变量名 输出的变量名 result, processed_data ✅ 是
变量类型 输出的数据类型 String, Object, Array ✅ 是
描述 输出的说明 “处理后的天气数据” ❌ 否

输出变量配置示例:

    # 构建输出对象
    ret: Output = {
        "key0": result # 拼接两次入参 input 的值
    }
步骤 6:测试和调试
测试方式 说明 操作步骤
单步测试 测试当前节点 点击"测试运行"按钮
流程测试 测试整个流程 点击"运行流程"按钮
调试模式 查看变量值 使用 print() 或日志输出
错误查看 查看错误信息 查看控制台输出

四、代码块节点使用示例

4.1 示例一:处理天气数据

场景: 在天气服务智能体中,处理天气 JSON 数据,添加星期几字段。

节点配置:

配置项
节点名称 处理天气数据
编程语言 Python
输入变量 weather_json (Object)
输出变量 result (Object)

代码实现:

import json
from datetime import datetime

def process_weather_data(weather_json):
    """
    处理天气数据,添加星期几字段
    """
    # 获取 output 数组
    output_list = weather_json.get("output", [])
    
    # 星期几中文名称
    weekday_names = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]
    
    # 处理每个天气项
    for item in output_list:
        if "predict_date" in item:
            # 解析日期
            date_str = item["predict_date"]
            date_obj = datetime.strptime(date_str, "%Y-%m-%d")
            
            # 计算星期几(0=周一,6=周日)
            weekday_n = date_obj.weekday()
            
            # 添加星期几字段
            item["predict_week_n"] = weekday_n
            item["predict_week_name"] = weekday_names[weekday_n]
    
    # 返回处理后的数据
    return {
        "output": output_list,
        "status": "success"
    }

流程连接:

weather_json

result

天气API节点

代码块节点
处理天气数据

格式化输出节点

用户回复

4.2 示例二:数据验证和转换

场景: 验证用户输入的数据格式,并进行转换。

节点配置:

配置项
节点名称 数据验证转换
编程语言 Python
输入变量 user_input (String)
输出变量 validated_data (Object)

代码实现:

import re
import json

def validate_and_convert(user_input):
    """
    验证和转换用户输入
    """
    try:
        # 尝试解析为 JSON
        data = json.loads(user_input)
        
        # 验证必需字段
        required_fields = ["name", "age", "email"]
        for field in required_fields:
            if field not in data:
                return {
                    "valid": False,
                    "error": f"缺少必需字段: {field}"
                }
        
        # 验证邮箱格式
        email_pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
        if not re.match(email_pattern, data["email"]):
            return {
                "valid": False,
                "error": "邮箱格式不正确"
            }
        
        # 验证年龄范围
        if not (0 <= data["age"] <= 150):
            return {
                "valid": False,
                "error": "年龄必须在 0-150 之间"
            }
        
        # 返回验证通过的数据
        return {
            "valid": True,
            "data": data
        }
        
    except json.JSONDecodeError:
        return {
            "valid": False,
            "error": "JSON 格式错误"
        }
    except Exception as e:
        return {
            "valid": False,
            "error": f"处理错误: {str(e)}"
        }

4.3 示例三:调用外部 API

场景: 在代码块中调用外部 API 获取数据。

节点配置:

配置项
节点名称 调用外部API
编程语言 Python
输入变量 api_url (String), params (Object)
输出变量 api_response (Object)

代码实现:

import requests
import json

def call_external_api(api_url, params):
    """
    调用外部 API
    """
    try:
        # 发送 GET 请求
        response = requests.get(
            api_url,
            params=params,
            timeout=10
        )
        
        # 检查响应状态
        if response.status_code == 200:
            return {
                "success": True,
                "data": response.json(),
                "status_code": response.status_code
            }
        else:
            return {
                "success": False,
                "error": f"API 请求失败,状态码: {response.status_code}",
                "status_code": response.status_code
            }
            
    except requests.exceptions.Timeout:
        return {
            "success": False,
            "error": "请求超时"
        }
    except requests.exceptions.RequestException as e:
        return {
            "success": False,
            "error": f"请求异常: {str(e)}"
        }
    except Exception as e:
        return {
            "success": False,
            "error": f"未知错误: {str(e)}"
        }

五、代码块节点最佳实践

5.1 代码编写规范

规范项 说明 示例
函数命名 使用有意义的函数名 process_weather_data
func1
注释说明 添加函数和关键逻辑注释 使用 docstring 和行内注释
错误处理 使用 try-except 处理异常 捕获并返回错误信息
代码格式 遵循 PEP 8(Python)或相应规范 使用格式化工具
变量命名 使用有意义的变量名 weather_data
data

5.2 性能优化建议

优化项 说明 建议
避免重复计算 缓存计算结果 使用变量存储中间结果
减少循环嵌套 优化算法复杂度 使用列表推导式
合理使用库 使用标准库和高效库 避免重复造轮子
异步处理 对于耗时操作使用异步 使用 async/await

5.3 错误处理模式

# 推荐的错误处理模式
def process_data(input_data):
    try:
        # 主要逻辑
        result = main_logic(input_data)
        return {
            "success": True,
            "data": result
        }
    except ValueError as e:
        return {
            "success": False,
            "error": f"数据错误: {str(e)}"
        }
    except Exception as e:
        return {
            "success": False,
            "error": f"处理失败: {str(e)}"
        }

六、注意事项

6.1 安全注意事项

注意事项 说明 风险等级
输入验证 始终验证输入数据 🔴 高
SQL 注入 避免直接拼接 SQL 🔴 高
代码注入 避免执行用户输入的代码 🔴 高
敏感信息 不要在代码中硬编码密钥 🟡 中
资源限制 注意内存和 CPU 使用 🟡 中

6.2 功能限制

限制项 说明 解决方案
执行时间 代码执行有时间限制 优化代码性能,使用异步
内存限制 有内存使用限制 处理大数据时分批处理
网络访问 可能限制某些网络访问 使用允许的网络库
文件系统 可能限制文件读写 使用临时存储或云存储

6.3 调试技巧

技巧 说明 示例
使用 print 输出调试信息 print(f"变量值: {variable}")
日志记录 使用日志记录 import logging
断点调试 在关键位置添加检查点 使用条件判断
单元测试 单独测试函数逻辑 在外部环境测试

6.4 常见错误及解决方案

错误类型 原因 解决方案
语法错误 代码语法不正确 检查语法,使用代码格式化
类型错误 数据类型不匹配 添加类型检查和转换
变量未定义 使用了未定义的变量 检查变量名和输入配置
返回值错误 返回值格式不正确 检查输出变量配置
超时错误 代码执行时间过长 优化代码性能

七、代码块节点与其他节点的连接

7.1 输入连接

输出1

输出2

上游节点1

代码块节点

上游节点2

下游节点

连接规则:

规则 说明
变量映射 上游节点的输出映射到代码块的输入变量
类型匹配 确保数据类型匹配
多输入 可以连接多个上游节点

7.2 输出连接

输出1

输出2

输出3

代码块节点

下游节点1

下游节点2

下游节点3

连接规则:

规则 说明
输出变量 代码中返回的变量作为输出
条件分支 可以根据输出值进行条件判断
多输出 可以返回多个输出变量

7.3 条件连接示例

success=true

success=false

status=timeout

代码块节点

成功处理节点

错误处理节点

超时处理节点


八、代码块节点工作流程

8.1 完整工作流程

外部服务 代码块节点 流程编排 用户 外部服务 代码块节点 流程编排 用户 触发流程 传入输入数据 执行代码逻辑 调用外部API(可选) 返回数据 处理数据 返回输出数据 返回结果

8.2 数据流转

成功

失败

输入数据

代码块处理

处理结果

输出数据

错误信息

下游节点

错误处理节点


九、代码块节点配置检查清单

9.1 配置前检查

  • 确定代码块的功能需求
  • 选择合适的编程语言
  • 明确输入数据的格式和类型
  • 明确输出数据的格式和类型
  • 准备测试数据

9.2 配置时检查

  • 节点名称清晰明确
  • 输入变量配置正确
  • 输出变量配置正确
  • 代码语法正确
  • 代码逻辑完整

9.3 配置后检查

  • 代码可以正常运行
  • 输入输出连接正确
  • 错误处理完善
  • 性能满足要求
  • 文档注释完整

十、常见问题 FAQ

Q1: 代码块节点支持哪些编程语言?

A: 目前主要支持 Python、JavaScript、Java 等,具体支持的语言版本请查看 Coze 平台文档。

Q2: 代码执行有时间限制吗?

A: 是的,代码执行通常有时间限制(如 30 秒),超过限制会被终止。建议优化代码性能。

Q3: 可以在代码块中调用其他节点吗?

A: 不能直接调用,但可以通过输出变量将数据传递给下游节点。

Q4: 如何处理代码执行错误?

A: 使用 try-except 捕获异常,并返回错误信息,让流程可以继续处理。

Q5: 代码块可以访问外部资源吗?

A: 可以,但可能受到网络和权限限制,具体请查看平台文档。

Q6: 如何调试代码块?

A: 使用 print 输出调试信息,或使用日志功能,查看执行日志。


十一、总结

11.1 关键要点

要点 说明
灵活性强 代码块节点提供了最大的灵活性
功能强大 可以实现复杂的业务逻辑
易于集成 可以轻松与其他节点连接
需要测试 充分测试确保功能正确

11.2 使用建议

  1. 从简单开始:先实现基本功能,再逐步完善
  2. 充分测试:使用各种测试数据验证功能
  3. 错误处理:始终添加错误处理逻辑
  4. 代码规范:遵循代码编写规范
  5. 文档注释:添加清晰的注释和文档

11.3 适用场景

  • ✅ 数据处理和转换
  • ✅ 复杂业务逻辑实现
  • ✅ 外部 API 调用
  • ✅ 算法实现
  • ✅ 数据验证和清洗

最后更新:2024年

示例

在之前的流程编排中,在日期的基础上增加一个星期几的字段,以此举例。

功能说明

这个 Python 脚本用于处理天气 JSON 数据,主要功能:

  1. 提取 predict_date 字段
  2. 根据日期计算星期几(数字)
  3. 在 JSON 中增加 predict_week_n 字段(0=周一,1=周二,…,6=周日)
  4. 可选:同时添加 predict_week_name 字段(中文星期名称)

代码说明

核心函数

1. get_weekday_n(date_str)

根据日期字符串返回星期几的数字表示。

参数:

  • date_str: 日期字符串,格式如 “2026-01-24”

返回值:

  • int: 星期几的数字,0=周一,1=周二,…,6=周日

示例:

weekday_n = get_weekday_n("2026-01-24")  # 返回 5(周六)
2. get_weekday_name(date_str)

根据日期字符串返回星期几的中文名称。

参数:

  • date_str: 日期字符串,格式如 “2026-01-24”

返回值:

  • str: 星期几的中文名称,如 “周一”、“周二” 等

示例:

weekday_name = get_weekday_name("2026-01-24")  # 返回 "周六"
3. process_weather_json(json_data)

处理天气 JSON 数据,添加星期几字段。

参数:

  • json_data: 包含天气数据的字典或 JSON 字符串

返回值:

  • dict: 处理后的 JSON 数据,每个 output 项都增加了 predict_week_npredict_week_name 字段

使用方法

方法一:直接使用函数

import json
from weather_json_processor import process_weather_json

# 方式1:传入字典
data = {
    "output": [
        {
            "predict_date": "2026-01-24",
            "temp_high": 12,
            "temp_low": 3,
            # ... 其他字段
        }
    ]
}

result = process_weather_json(data)
print(json.dumps(result, ensure_ascii=False, indent=2))

# 方式2:传入 JSON 字符串
json_str = '{"output": [{"predict_date": "2026-01-24", ...}]}'
result = process_weather_json(json_str)

方法二:从文件读取

import json
from weather_json_processor import process_weather_json

# 从文件读取 JSON
with open("weather_data.json", "r", encoding="utf-8") as f:
    data = json.load(f)

# 处理数据
result = process_weather_json(data)

# 保存处理后的数据
with open("weather_processed.json", "w", encoding="utf-8") as f:
    json.dump(result, f, ensure_ascii=False, indent=2)

方法三:命令行运行

python3 weather_json_processor.py

输入示例

{
  "output": [
    {
      "condition": "晴",
      "humidity": 57,
      "predict_date": "2026-01-24",
      "temp_high": 12,
      "temp_low": 3,
      "weather_day": "晴",
      "wind_dir_day": "东北风",
      "wind_dir_night": "东北风",
      "wind_level_day": "2",
      "wind_level_night": "2"
    }
  ]
}

输出示例

{
  "output": [
    {
      "condition": "晴",
      "humidity": 57,
      "predict_date": "2026-01-24",
      "temp_high": 12,
      "temp_low": 3,
      "weather_day": "晴",
      "wind_dir_day": "东北风",
      "wind_dir_night": "东北风",
      "wind_level_day": "2",
      "wind_level_night": "2",
      "predict_week_n": 5,
      "predict_week_name": "周六"
    }
  ]
}

星期几对应表

数字 星期 说明
0 周一 Monday
1 周二 Tuesday
2 周三 Wednesday
3 周四 Thursday
4 周五 Friday
5 周六 Saturday
6 周日 Sunday

注意: Python 的 weekday() 方法返回 0-6,其中 0 表示周一,6 表示周日。


运行结果

运行脚本后的输出:

处理后的 JSON 数据:
{
  "output": [
    {
      "condition": "晴",
      "humidity": 57,
      "predict_date": "2026-01-24",
      "temp_high": 12,
      "temp_low": 3,
      "weather_day": "晴",
      "wind_dir_day": "东北风",
      "wind_dir_night": "东北风",
      "wind_level_day": "2",
      "wind_level_night": "2",
      "predict_week_n": 5,
      "predict_week_name": "周六"
    },
    {
      "condition": "晴",
      "humidity": 72,
      "predict_date": "2026-01-25",
      "temp_high": 14,
      "temp_low": 4,
      "weather_day": "晴",
      "wind_dir_day": "东北风",
      "wind_dir_night": "东北风",
      "wind_level_day": "2",
      "wind_level_night": "2",
      "predict_week_n": 6,
      "predict_week_name": "周日"
    },
    {
      "condition": "小雨",
      "humidity": 83,
      "predict_date": "2026-01-26",
      "temp_high": 11,
      "temp_low": 4,
      "weather_day": "小雨",
      "wind_dir_day": "西北风",
      "wind_dir_night": "西北风",
      "wind_level_day": "3",
      "wind_level_night": "3",
      "predict_week_n": 0,
      "predict_week_name": "周一"
    }
  ]
}

验证结果:
日期: 2026-01-24, 星期几(数字): 5, 星期几(名称): 周六
日期: 2026-01-25, 星期几(数字): 6, 星期几(名称): 周日
日期: 2026-01-26, 星期几(数字): 0, 星期几(名称): 周一

简化版本(仅添加 predict_week_n)

如果只需要添加 predict_week_n 字段,可以使用以下简化版本:

import json
from datetime import datetime

def process_weather_json(json_data):
    """
    处理天气 JSON 数据,添加 predict_week_n 字段
    
    Args:
        json_data: 可以是以下格式之一:
            - output 数组(列表):直接传入 output 数组内容
            - 包含 output 的字典:{"output": [...]}
            - JSON 字符串
    
    Returns:
        list 或 dict: 处理后的数据
            - 如果传入的是列表,返回列表
            - 如果传入的是字典,返回字典
    """
    # 如果是字符串,先解析
    if isinstance(json_data, str):
        data = json.loads(json_data)
    else:
        data = json_data
    
    # 确定要处理的列表
    output_list = None
    
    # 如果直接传入的是列表(output 数组)
    if isinstance(data, list):
        output_list = data
    # 如果传入的是字典,且包含 output 键
    elif isinstance(data, dict) and "output" in data:
        output_list = data["output"]
    
    # 处理 output 数组中的每个元素
    if output_list and isinstance(output_list, list):
        for item in output_list:
            if isinstance(item, dict) and "predict_date" in item:
                # 提取日期
                predict_date = item["predict_date"]
                
                # 计算星期几(数字,0=周一,6=周日)
                predict_week_n = get_weekday_n(predict_date)
                
                # 添加星期几字段
                item["predict_week_n"] = predict_week_n
                
                # 可选:同时添加星期几的中文名称
                item["predict_week_name"] = get_weekday_name(predict_date)
    
    return data


注意事项

  1. 日期格式:确保 predict_date 字段的格式为 YYYY-MM-DD(如 “2026-01-24”)
  2. 时区:代码使用本地时区,如需指定时区,可以使用 pytz
  3. 错误处理:如果日期格式不正确,会抛出 ValueError 异常
  4. 编码:处理中文时确保使用 UTF-8 编码

错误处理示例

import json
from datetime import datetime

def get_weekday_n(date_str):
    """
    根据日期字符串返回星期几(数字)
    
    Args:
        date_str: 日期字符串,格式如 "2026-01-24"
    
    Returns:
        int: 星期几,0=周一,1=周二,...,6=周日
    """
    # 解析日期字符串
    date_obj = datetime.strptime(date_str, "%Y-%m-%d")
    # weekday() 返回 0=周一,1=周二,...,6=周日
    return date_obj.weekday()

def get_weekday_name(date_str):
    """
    根据日期字符串返回星期几(中文名称)
    
    Args:
        date_str: 日期字符串,格式如 "2026-01-24"
    
    Returns:
        str: 星期几的中文名称
    """
    weekday_names = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]
    weekday_n = get_weekday_n(date_str)
    return weekday_names[weekday_n]



def process_weather_json_safe(json_data):
    """带错误处理的版本"""
    try:
        if isinstance(json_data, str):
            data = json.loads(json_data)
        else:
            data = json_data
        
        if "output" in data and isinstance(data["output"], list):
            for item in data["output"]:
                if "predict_date" in item:
                    try:
                        date_obj = datetime.strptime(item["predict_date"], "%Y-%m-%d")
                        item["predict_week_n"] = date_obj.weekday()
                    except ValueError as e:
                        print(f"日期格式错误: {item['predict_date']}, 错误: {e}")
                        item["predict_week_n"] = None
        
        return data
    except Exception as e:
        print(f"处理 JSON 时出错: {e}")
        return json_data

依赖要求

  • Python 3.6+
  • 标准库:json, datetime

无需安装额外的第三方库。

在这里插入图片描述

选择变量输入,编写代码,输出 。

在这里插入图片描述

# 在这里,您可以通过 'args'  获取节点中的输入变量,并通过 'ret' 输出结果
# 'args' 已经被正确地注入到环境中
# 下面是一个示例,首先获取节点的全部输入参数params,其次获取其中参数名为'input'的值:
# params = args.params; 
# input = params['input'];
# 下面是一个示例,输出一个包含多种数据类型的 'ret' 对象:
# ret: Output =  { "name": '小明', "hobbies": ["看书", "旅游"] };

async def main(args: Args) -> Output:
    params = args.params

        # 处理 JSON 数据
    result = process_weather_json(params['input'])
    
    # 输出处理后的 JSON(格式化输出)
    print("处理后的 JSON 数据:")
    print(json.dumps(result, ensure_ascii=False, indent=2))
    
    # 构建输出对象
    ret: Output = {
        "key0": result # 拼接两次入参 input 的值
    }
    return ret

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
天气 JSON 数据处理脚本
功能:提取 predict_date,计算星期几,并添加 predict_week_n 字段
"""

import json
from datetime import datetime

def get_weekday_n(date_str):
    """
    根据日期字符串返回星期几(数字)
    
    Args:
        date_str: 日期字符串,格式如 "2026-01-24"
    
    Returns:
        int: 星期几,0=周一,1=周二,...,6=周日
    """
    # 解析日期字符串
    date_obj = datetime.strptime(date_str, "%Y-%m-%d")
    # weekday() 返回 0=周一,1=周二,...6=周日
    return date_obj.weekday()

def get_weekday_name(date_str):
    """
    根据日期字符串返回星期几(中文名称)
    
    Args:
        date_str: 日期字符串,格式如 "2026-01-24"
    
    Returns:
        str: 星期几的中文名称
    """
    weekday_names = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]
    weekday_n = get_weekday_n(date_str)
    return weekday_names[weekday_n]

def process_weather_json(json_data):
    """
    处理天气 JSON 数据,添加 predict_week_n 字段
    
    Args:
        json_data: 可以是以下格式之一:
            - output 数组(列表):直接传入 output 数组内容
            - 包含 output 的字典:{"output": [...]}
            - JSON 字符串
    
    Returns:
        list 或 dict: 处理后的数据
            - 如果传入的是列表,返回列表
            - 如果传入的是字典,返回字典
    """
    # 如果是字符串,先解析
    if isinstance(json_data, str):
        data = json.loads(json_data)
    else:
        data = json_data
    
    # 确定要处理的列表
    output_list = None
    
    # 如果直接传入的是列表(output 数组)
    if isinstance(data, list):
        output_list = data
    # 如果传入的是字典,且包含 output 键
    elif isinstance(data, dict) and "output" in data:
        output_list = data["output"]
    
    # 处理 output 数组中的每个元素
    if output_list and isinstance(output_list, list):
        for item in output_list:
            if isinstance(item, dict) and "predict_date" in item:
                # 提取日期
                predict_date = item["predict_date"]
                
                # 计算星期几(数字,0=周一,6=周日)
                predict_week_n = get_weekday_n(predict_date)
                
                # 添加星期几字段
                item["predict_week_n"] = predict_week_n
                
                # 可选:同时添加星期几的中文名称
                item["predict_week_name"] = get_weekday_name(predict_date)
    
    return data


试运行

在这里插入图片描述

输出数据中多了星期几 。

在这里插入图片描述

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐