You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何读取两个TXT文件内容,匹配模型并对比数值,输出差异至新TXT文件?

嘿,我刚好有个Python实现方案,能完美解决你对比两个文件中模型数值差异的需求!下面是具体的思路和代码:

解决方案:对比两个文件中的模型数值差异

核心思路

  • 先把file2.txt里的所有模型和对应数值存入字典,这样后续查找会非常高效
  • 逐行读取file1.txt,提取每个模型的名称和数值
  • 用模型名在字典里匹配,找到后计算两个数值的差异
  • 把所有差异结果整理成清晰的格式,写入新的TXT文件

Python代码实现

def compare_model_values(file1_path, file2_path, output_path):
    # 第一步:加载file2的模型数据到字典,方便快速查询
    file2_model_data = {}
    with open(file2_path, 'r', encoding='utf-8') as f2:
        for line in f2:
            cleaned_line = line.strip()
            if not cleaned_line:  # 跳过空行
                continue
            # 假设每行格式是「模型名 数值」,用空格分割;如果是逗号就改成split(',')
            model_info = cleaned_line.split()
            if len(model_info) != 2:
                print(f"⚠️ 警告:file2里这行格式不对,跳过:{cleaned_line}")
                continue
            model_name, value_text = model_info
            try:
                file2_model_data[model_name] = float(value_text)
            except ValueError:
                print(f"⚠️ 警告:file2里{model_name}的数值不是有效数字,跳过")

    # 第二步:处理file1并计算差异
    with open(file1_path, 'r', encoding='utf-8') as f1, open(output_path, 'w', encoding='utf-8') as result_file:
        # 写入结果表头
        result_file.write("模型名 数值变化情况\n")
        result_file.write("------------------------\n")
        for line in f1:
            cleaned_line = line.strip()
            if not cleaned_line:
                continue
            model_info = cleaned_line.split()
            if len(model_info) != 2:
                print(f"⚠️ 警告:file1里这行格式不对,跳过:{cleaned_line}")
                continue
            model_name, value_text = model_info
            try:
                file1_value = float(value_text)
            except ValueError:
                print(f"⚠️ 警告:file1里{model_name}的数值不是有效数字,跳过")
                continue

            # 检查file2里有没有这个模型
            if model_name not in file2_model_data:
                print(f"ℹ️ 提示:file2里没找到模型{model_name},跳过")
                continue

            # 计算差异:file1数值减去file2数值
            diff_value = file1_value - file2_model_data[model_name]
            # 整理输出文本,正数显示增加,负数显示减少
            change_desc = f"增加 {diff_value:.2f}" if diff_value > 0 else f"减少 {abs(diff_value):.2f}"
            result_file.write(f"{model_name} {change_desc}\n")

# 直接运行这个脚本就能用啦
if __name__ == "__main__":
    compare_model_values("file1.txt", "file2.txt", "model_differences.txt")
    print("✅ 对比完成!结果已经保存到model_differences.txt里啦")

代码细节说明

  • 文件格式适配:默认假设两个文件每行是「模型名 数值」用空格分隔,如果你的文件是逗号、制表符分隔,只需要把split()改成split(',')split('\t')就行
  • 容错处理:脚本会自动跳过空行、格式错误的行,还会提示哪些内容有问题,方便你排查
  • 结果展示:输出的文件会有清晰的表头,每个模型的变化情况一目了然,数值保留两位小数更易读
  • 编码兼容:默认用UTF-8编码读取和写入,如果你的文件是GBK等其他编码,记得在open()函数里加上encoding='gbk'参数

小提示

如果你的模型名里包含空格,那空格分割就不行了,这时候你需要换个固定的分隔符(比如用|分隔模型名和数值),或者根据具体格式调整提取逻辑哦~

内容的提问来源于stack exchange,提问作者LLB3000

火山引擎 最新活动