Zapier运行Python代码报错:解析字典失败及类型转换问题
解决Zapier中输入字符串转字典列表及代码错误问题
问题分析
- 你碰到的
TypeError: string indices must be integers, not 'str'错误,核心原因是Zapier把countries参数解析成了字符串,而非预期的字典列表,导致无法用字符串键(比如country["Country_Num"])进行索引操作。 - 原代码还有个隐性错误:遍历逻辑里用的键名是
Country_Nums和Country_Names,但原始数据的实际键是Country_Num和Country_Name(多了末尾的s),就算转成字典列表也会报键不存在的错误。
解决方案步骤
1. 字符串转字典列表
使用Python内置的json模块,将Zapier传入的字符串解析成可操作的字典列表,需要先导入json模块。
2. 修正键名拼写
把遍历代码里的键名改成和原始数据匹配的正确名称。
修正后的完整代码
import json # 将输入的字符串解析为字典列表 countries_data = json.loads(input_data['countries']) # 初始化存储国家编号和名称的列表 country_nums = [] country_names = [] # 遍历处理每个国家数据 for country in countries_data: country_nums.append(country["Country_Num"]) country_names.append(country["Country_Name"]) # 组装输出结果 output = {'Country_Nums': country_nums, 'Country_Names': country_names} return output
特殊情况处理
如果Zapier传入的字符串用了单引号(JSON规范要求双引号),可以先替换单引号再解析:
import json # 修正单引号为双引号,适配JSON格式要求 fixed_countries_str = input_data['countries'].replace("'", '"') countries_data = json.loads(fixed_countries_str) # 后续遍历和输出代码同上
内容的提问来源于stack exchange,提问作者Garlon Yau
相关产品推荐
相关产品推荐

