如何在Python中读取并转换MS Power Automate数据表为数组?
读取MS Power Automate数据表并转换为Python数组的解决方案
Power Automate导出的数据表通常以JSON格式返回,核心是处理字段名空格转下划线和同名字段多值合并这两个需求,以下是具体实现步骤和代码:
1. 理解Power Automate数据表结构
Power Automate的数据表一般嵌套在value字段下,示例结构如下(可能包含重复字段或带空格的字段名):
{ "value": [ { "First Name": "John", "Last Name": "Doe", "Email": "john@example.com", "Email": "john.doe@example.com" }, { "First Name": "Jane", "Last Name": "Smith", "Phone Number": "123-456-7890" } ] }
2. 核心处理代码
处理重复字段与字段名清理的钩子函数
利用Python的json模块的object_pairs_hook参数,自定义处理逻辑:
import json def process_pa_table(pairs): processed = {} for raw_key, value in pairs: # 将字段名中的空格替换为下划线 cleaned_key = raw_key.replace(" ", "_") if cleaned_key in processed: # 若字段已存在,将多值合并为列表 if not isinstance(processed[cleaned_key], list): processed[cleaned_key] = [processed[cleaned_key]] processed[cleaned_key].append(value) else: processed[cleaned_key] = value return processed
加载并转换数据表
# 模拟从Power Automate获取的JSON数据(实际可从API响应/本地文件读取) pa_table_data = ''' { "value": [ { "First Name": "John", "Last Name": "Doe", "Email": "john@example.com", "Email": "john.doe@example.com" }, { "First Name": "Jane", "Last Name": "Smith", "Phone Number": "123-456-7890" } ] } ''' # 加载JSON并应用处理逻辑 parsed_data = json.loads(pa_table_data, object_pairs_hook=process_pa_table) # 转换为Python数组(列表) python_array = parsed_data["value"] # 查看结果 for record in python_array: print(record)
3. 代码说明
- 字段名清理:通过
replace(" ", "_")直接将带空格的字段名转为下划线命名,符合Python变量命名习惯。 - 同名字段处理:当遇到重复字段名时,自动将已有值转为列表并追加新值,避免默认JSON解析的覆盖问题。
- 兼容性:如果Power Automate返回的多值字段本身就是列表(如多选选项),逻辑会直接保留列表结构,无需额外处理。
4. 实际场景扩展
如果是通过Power Automate API获取数据,可结合requests库直接处理响应:
import requests response = requests.get("YOUR_POWER_AUTOMATE_API_ENDPOINT") parsed_data = response.json(object_pairs_hook=process_pa_table) python_array = parsed_data["value"]
内容的提问来源于stack exchange,提问作者Wiillou
相关产品推荐
相关产品推荐

