解析两个映射文件并提取指定clientId的映射关系
解析映射文件并提取指定ClientId的映射关系
我来帮你搞定这个需求!下面是一个实用的Python方案,能轻松处理这两个映射文件,快速提取你需要的指定clientId对应的主、副映射关系:
步骤1:理解映射文件结构
先把你提供的两个映射文件内容整理成清晰的格式,方便后续处理:
# primary_mapping.txt 内容 { 1: [343, 0, 686, 1372, 882, 196], 2: [687, 1, 1373, 883, 197, 736, 1030, 1569], 3: [1374, 2, 884, 737, 198, 1570], 4: [1375, 1032, 1424, 3, 885, 1228], 5: [1033, 1425, 4, 200, 886] } # secondary_mapping.txt 内容 { 1: [1152, 816, 1488, 336, 1008], 2: [1153, 0, 817, 337, 1489, 1009, 1297], 3: [1, 1154, 1490, 338], 4: [1155, 2, 339, 1491, 819, 1299, 1635], 5: [820, 1492, 340, 3, 1156] }
步骤2:编写解析与提取函数
这个函数会读取两个映射文件,安全解析内容,并返回指定clientId的对应关系,如果clientId不存在会给出明确提示:
import ast def fetch_client_mappings(target_client_id, primary_file, secondary_file): # 读取并解析主映射文件(用ast.literal_eval避免安全风险) with open(primary_file, 'r', encoding='utf-8') as f: primary_content = f.read().strip() primary_map = ast.literal_eval(primary_content) # 读取并解析副映射文件 with open(secondary_file, 'r', encoding='utf-8') as f: secondary_content = f.read().strip() secondary_map = ast.literal_eval(secondary_content) # 提取目标clientId的映射 primary_result = primary_map.get(target_client_id, f"⚠️ ClientId {target_client_id} 未在主映射中找到") secondary_result = secondary_map.get(target_client_id, f"⚠️ ClientId {target_client_id} 未在副映射中找到") return { "目标ClientId": target_client_id, "主映射关系": primary_result, "副映射关系": secondary_result }
步骤3:示例使用
比如你想提取clientId=3的映射关系,直接调用函数即可:
# 替换为你的文件实际路径 result = fetch_client_mappings(3, "primary_mapping.txt", "secondary_mapping.txt") print(result)
运行后会输出:
{ "目标ClientId": 3, "主映射关系": [1374, 2, 884, 737, 198, 1570], "副映射关系": [1, 1154, 1490, 338] }
小提示
- 为什么用
ast.literal_eval?因为它只会解析合法的Python字面量(比如字典、列表),比直接用eval更安全,不用担心文件里有恶意代码。 - 如果你的映射文件格式和示例略有差异(比如键是字符串类型),只需微调解析后的字典键的类型即可适配。
内容的提问来源于stack exchange,提问作者user1950349
相关产品推荐
相关产品推荐

