ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Python实现解析英雄联盟个人数据

Python实现解析英雄联盟个人数据 以下是一段 Python 代码用于解析两种形式的英雄联盟LOL手游个人数据并进行统一分析展示。---pythonimport jsonfrom typing import Dict, Any# 模拟两张截图的数据实际可从OCR或手动输入获取data_v1 {段位: 流光翡翠IV,场次: 206,胜率: 69.9,战损率: 5.2,参团率: 35.7,MVP次数: 2,S评价: 1,A评价: 1,神超神: 17,五连破: 0,四连破: 4,三连破: 12,先拔头筹: 有, # 仅示意每分钟获得金币: 748,造成英雄伤害/局: 13341,承受英雄伤害/局: 10735,造成防御塔伤害/局: 1957}data_v2 {段位: 流光翡翠IV,场次: 206,胜率: 69.9,战损: 5.2, # 对应战损率参团: 35.7, # 对应参团率MVP: 2,S: 1,A: 1,神: 17,五连破: 0,四连破: 4,三连破: 12,先拔头筹: 有,推进: None, # 未提供具体数值可能为综合评分发育: None,生存: None,输出: None}def normalize_lol_data(raw: Dict[str, Any]) - Dict[str, Any]:将两种不同格式的数据统一为标准化结构normalized {}# 基础信息normalized[段位] raw.get(段位, 未知)normalized[场次] raw.get(场次, 0)normalized[胜率] raw.get(胜率, 0.0)# 关键指标兼容不同字段名normalized[战损率] raw.get(战损率) or raw.get(战损, 0.0)normalized[参团率] raw.get(参团率) or raw.get(参团, 0.0)normalized[MVP] raw.get(MVP次数) or raw.get(MVP, 0)normalized[S评价] raw.get(S评价) or raw.get(S, 0)normalized[A评价] raw.get(A评价) or raw.get(A, 0)normalized[超神] raw.get(神超神) or raw.get(神, 0)# 连杀/成就normalized[五连破] raw.get(五连破, 0)normalized[四连破] raw.get(四连破, 0)normalized[三连破] raw.get(三连破, 0)normalized[先拔头筹] raw.get(先拔头筹, 无)# 进阶数据仅第一版有normalized[每分钟金币] raw.get(每分钟获得金币, None)normalized[英雄伤害/局] raw.get(造成英雄伤害/局, None)normalized[承受伤害/局] raw.get(承受英雄伤害/局, None)normalized[塔伤害/局] raw.get(造成防御塔伤害/局, None)# 第二版特有的综合评分如果存在for key in [推进, 发育, 生存, 输出]:if key in raw:normalized[key] raw[key]return normalizeddef analyze_lol_data(normalized: Dict[str, Any]) - Dict[str, Any]:对标准化后的数据进行简单分析analysis {}# 基础评价win_rate normalized[胜率]if win_rate 60:analysis[胜率评价] 优秀elif win_rate 50:analysis[胜率评价] 良好else:analysis[胜率评价] 待提升# 战损评价通常 3 算不错kda normalized[战损率]if kda 4:analysis[战损评价] 优秀elif kda 2.5:analysis[战损评价] 良好else:analysis[战损评价] 需改善# MVP率total_games normalized[场次]mvp_rate (normalized[MVP] / total_games) * 100 if total_games 0 else 0analysis[MVP率] f{mvp_rate:.1f}%# 超神率god_like_rate (normalized[超神] / total_games) * 100 if total_games 0 else 0analysis[超神率] f{god_like_rate:.1f}%# 综合输出/生存如有if normalized.get(输出) is not None:analysis[输出评分] normalized[输出]if normalized.get(生存) is not None:analysis[生存评分] normalized[生存]return analysis# 主程序if __name__ __main__:# 分别处理两种数据print( 数据版本1 分析 )norm1 normalize_lol_data(data_v1)result1 analyze_lol_data(norm1)print(json.dumps(result1, indent2, ensure_asciiFalse))print(\n 数据版本2 分析 )norm2 normalize_lol_data(data_v2)result2 analyze_lol_data(norm2)print(json.dumps(result2, indent2, ensure_asciiFalse))---代码说明· normalize_lol_data统一两种字段命名如战损率 vs 战损MVP次数 vs MVP并保留各自特有字段。· analyze_lol_data基于统一数据计算胜率评价、战损评价、MVP率、超神率等。· 如果未来有更多字段如推进、发育等可直接扩展字典解析逻辑。---输出示例 数据版本1 分析 {胜率评价: 优秀,战损评价: 优秀,MVP率: 1.0%,超神率: 8.3%} 数据版本2 分析 {胜率评价: 优秀,战损评价: 优秀,MVP率: 1.0%,超神率: 8.3%}如果需要接入真实OCR识别或从图片自动提取可配合 paddleocr 或 easyocr 使用。当前代码专注于数据解析与分析逻辑。以下是示例用图
返回列表