Coze 流程编排节点中增加python代码块指南
Coze 流程编排节点中增加代码块指南
概述
在 Coze(扣子)平台的流程编排中,代码块节点是一个强大的功能,允许开发者通过编写代码来实现自定义逻辑、数据处理和业务功能。本文档详细介绍如何在流程编排中添加和使用代码块节点。
一、代码块节点简介
1.1 什么是代码块节点
代码块节点是 Coze 流程编排中的一个特殊节点,允许用户编写代码来执行自定义逻辑,支持多种编程语言和数据处理操作。
1.2 代码块节点的作用
| 功能 | 说明 | 应用场景 |
|---|---|---|
| 数据处理 | 对输入数据进行转换、过滤、计算 | 数据清洗、格式转换 |
| 业务逻辑 | 实现复杂的业务规则和判断 | 条件判断、流程控制 |
| API 调用 | 调用外部 API 或内部服务 | 数据获取、服务集成 |
| 算法实现 | 实现特定算法或计算 | 数据分析、机器学习 |
| 工具函数 | 封装可复用的工具函数 | 字符串处理、日期计算 |
二、添加代码块节点的方法
2.1 方法一:从节点库添加
步骤:
-
打开流程编排界面
- 进入 Coze 平台
- 选择或创建智能体
- 点击"流程编排"或"编排"标签
-
查找代码块节点
- 在左侧节点库中搜索"代码块"或"Code Block"
- 或浏览节点分类找到"代码"类别
-
添加节点
- 将代码块节点拖拽到画布上
- 或点击节点库中的代码块图标
2.2 方法二:从快捷菜单添加
步骤:
- 在流程编排画布上右键点击
- 选择"插入节点"或"添加节点"
- 从菜单中选择"代码块"或"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 字符串” | ❌ 否 |
输入变量配置示例:
步骤 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"
}
流程连接:
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 输入连接
连接规则:
| 规则 | 说明 |
|---|---|
| 变量映射 | 上游节点的输出映射到代码块的输入变量 |
| 类型匹配 | 确保数据类型匹配 |
| 多输入 | 可以连接多个上游节点 |
7.2 输出连接
连接规则:
| 规则 | 说明 |
|---|---|
| 输出变量 | 代码中返回的变量作为输出 |
| 条件分支 | 可以根据输出值进行条件判断 |
| 多输出 | 可以返回多个输出变量 |
7.3 条件连接示例
八、代码块节点工作流程
8.1 完整工作流程
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 使用建议
- ✅ 从简单开始:先实现基本功能,再逐步完善
- ✅ 充分测试:使用各种测试数据验证功能
- ✅ 错误处理:始终添加错误处理逻辑
- ✅ 代码规范:遵循代码编写规范
- ✅ 文档注释:添加清晰的注释和文档
11.3 适用场景
- ✅ 数据处理和转换
- ✅ 复杂业务逻辑实现
- ✅ 外部 API 调用
- ✅ 算法实现
- ✅ 数据验证和清洗
最后更新:2024年
示例
在之前的流程编排中,在日期的基础上增加一个星期几的字段,以此举例。
功能说明
这个 Python 脚本用于处理天气 JSON 数据,主要功能:
- 提取
predict_date字段 - 根据日期计算星期几(数字)
- 在 JSON 中增加
predict_week_n字段(0=周一,1=周二,…,6=周日) - 可选:同时添加
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_n和predict_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
注意事项
- 日期格式:确保
predict_date字段的格式为YYYY-MM-DD(如 “2026-01-24”) - 时区:代码使用本地时区,如需指定时区,可以使用
pytz库 - 错误处理:如果日期格式不正确,会抛出
ValueError异常 - 编码:处理中文时确保使用 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
试运行

输出数据中多了星期几 。

更多推荐




所有评论(0)