如何处理bytes类型JSON数据,提取目标字段并获取最大概率值?
处理bytes类型JSON数据的解决方案
1. 先将bytes转换为JSON字典
你的result是bytes类型,第一步必须把它解码成字符串,再解析为Python字典,才能操作里面的字段:
import json # 解码bytes为UTF-8字符串,再转成字典 result_dict = json.loads(result.decode('utf-8'))
2. 提取目标字段
提取Scored Probabilities_0到Scored Probabilities_9
循环0-9拼接键名,批量提取概率值:
# 列表推导式简洁实现 scored_probs = [result_dict[f"Scored Probabilities_{n}"] for n in range(10)] # 或者用循环逐个添加 # scored_probs = [] # for n in range(10): # key = f"Scored Probabilities_{n}" # scored_probs.append(result_dict[key])
提取Scored Labels字段
直接通过键名取值:
scored_labels = result_dict["Scored Labels"]
3. 获取Scored Probabilities的最大值及对应字段
从提取出的概率列表中找最大值,同时定位对应的Scored Probabilities_n:
max_prob_value = max(scored_probs) max_prob_index = scored_probs.index(max_prob_value) print(f"最大值是Scored Probabilities_{max_prob_index}对应的{max_prob_value}")
4. 关于max(result)得到125的原因及修正
- 原因:bytes类型本质是字节序列,
max(result)计算的是字节序列中ASCII码值最大的字节。125对应的ASCII字符是},而JSON数据的结尾通常是},所以你得到的125是这个字符的ASCII码,和JSON里的概率数值完全无关。 - 正确做法:必须先将bytes转换为JSON字典(步骤1),提取出概率数值列表后,再用
max()计算最大值(步骤3)。
内容的提问来源于stack exchange,提问作者Thoại Zeus Trần
相关产品推荐
相关产品推荐

