遍历文件匹配项并对匹配后的字段执行算术运算
批量替换文本行生成新内容的解决方案
这里有一个实用的Python脚本方案,能帮你高效处理这个批量文本替换需求,完全匹配你描述的规则:
核心思路
- 逐行读取目标文件,精准识别包含
120.50c的行 - 提取每行里紧随的数值字段(比如示例中的
1.0550E-05) - 用该数值分别乘以0.79、0.10、0.11,得到三个新数值
- 将原单行替换为三行,分别对应
120.39c、120.40c、120.41c加上计算后的新数值
Python实现代码
# 替换成你自己的输入、输出文件路径 input_file_path = "source_file.txt" output_file_path = "result_file.txt" # 配置新标签和对应的计算系数,方便后续调整 replace_rules = [ ("120.39c", 0.79), ("120.40c", 0.10), ("120.41c", 0.11) ] # 以只读模式打开原文件,写入模式打开输出文件 with open(input_file_path, 'r', encoding='utf-8') as in_file, \ open(output_file_path, 'w', encoding='utf-8') as out_file: for line in in_file: cleaned_line = line.strip() # 只处理包含目标字符串的行 if "120.50c" in cleaned_line: # 拆分标签和数值部分,兼容可能的空格分隔 line_parts = cleaned_line.split() if len(line_parts) >= 2: try: original_num = float(line_parts[1]) # 遍历规则生成三行新内容 for new_tag, coeff in replace_rules: calculated_num = original_num * coeff # 保持科学计数法格式,和原数值的精度对齐 new_line = f"{new_tag} {calculated_num:.4E}\n" out_file.write(new_line) except ValueError: # 如果数值转换失败,原样保留该行,避免数据丢失 out_file.write(line) else: # 格式不符合预期的行,原样写入 out_file.write(line) else: # 不包含目标字符串的行,直接写入输出文件 out_file.write(line)
使用提示
- 把代码里的
source_file.txt和result_file.txt替换成你实际的文件路径 - 脚本不会修改原文件,所有修改都写入新文件,安全性拉满
- 如果你的数值不是科学计数法,或者需要调整小数位数,可以修改
:.4E这个格式符(比如:.6f表示保留6位小数的普通格式)
内容的提问来源于stack exchange,提问作者Bryon C.
相关产品推荐
相关产品推荐

