Python中删除JSON所有ts键报错KeyError 0,求解决方法
解决JSON中删除所有machine下ts键的问题
问题原因
你遇到的KeyError 0,大概率是错误地用数字索引(比如pop(0))去操作字典的键。因为ts是字符串类型的键,不是数组索引,直接用数字会导致找不到键报错。
解决方案(Python实现)
假设你已经将JSON文件加载为Python字典,按以下步骤处理:
- 遍历
Essais下的每台机器 - 对每台机器里的
temperature和humidity数组,逐个删除其中对象的ts键
示例代码:
import json # 读取JSON文件 with open('your_file.json', 'r', encoding='utf-8') as f: data = json.load(f) # 遍历所有机器 for machine_name, machine_data in data['Essais'].items(): # 遍历机器下的传感器类型(temperature、humidity) for sensor_type, sensor_list in machine_data.items(): # 遍历传感器数组中的每个数据对象 for item in sensor_list: # 安全删除ts键,即使键不存在也不会报错 item.pop('ts', None) # 若确定所有对象都有ts键,也可以用 del item['ts'] # 保存修改后的JSON with open('modified_file.json', 'w', encoding='utf-8') as f: json.dump(data, f, indent=2, ensure_ascii=False)
代码说明
data['Essais'].items():自动遍历所有机器(不管是machine、machine2还是其他命名的机器)sensor_list对应temperature或humidity的数组,每个元素是包含ts和value的字典item.pop('ts', None):避免因个别对象无ts键而报错,适配更复杂的场景
内容的提问来源于stack exchange,提问作者Brell
相关产品推荐
相关产品推荐

