Python如何将文件1的数值对应赋值到文件2完成表达式计算
Python实现键值映射替换表达式并计算的方案
实现逻辑
- 先解析文本文件1的键值映射关系,存储为字符串键对应浮点值的字典
- 读取文本文件2的表达式字符串,将其中所有键替换为对应的数值
- 执行替换后的表达式得到计算结果
完整代码示例
# 1. 解析文件1的键值映射 with open('文件1的实际路径.txt', 'r', encoding='utf-8') as f1: content1 = f1.read().strip() key_value = {} for item in content1.split(','): k, v = item.split('=') # 键存字符串方便后续替换 key_value[k.strip()] = float(v.strip()) # 2. 读取文件2的表达式 with open('文件2的实际路径.txt', 'r', encoding='utf-8') as f2: expr = f2.read().strip() # 3. 替换表达式中的键为对应数值,按键长度倒序替换避免短键先匹配出错 for k in sorted(key_value.keys(), key=lambda x: len(x), reverse=True): expr = expr.replace(k, str(key_value[k])) # 4. 计算表达式 result = eval(expr) print(f"计算结果为:{result}")
注意事项
- 替换键时按长度倒序处理,是为了避免存在
1和10这类长短键时,短键先替换导致长键匹配失效的问题,你的示例中都是单个数字键,该逻辑也兼容 eval方法仅适合表达式来源完全可信的场景,如果是外部不可信输入,建议使用sympy库的parse_expr方法完成计算,避免代码注入风险- 你给出的示例计算过程为
(0.345 + 54.6) * (235.67 + 54.6) = 54.945 * 290.27 = 15948.41715,代码运行后会输出对应结果
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

