You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python将多个TXT文件内容提取并转换为pandas DataFrame

提取txt内容生成Pandas DataFrame实现方案

实现思路

  • 两个txt文件都是结构化的键值对格式,我们可以通过匹配每行的固定前缀提取对应值
  • 先封装单个txt文件的解析函数,统一提取公共配置、SVM不同惩罚系数C对应的准确率、总运行时间三类数据
  • 收集所有文件的解析结果后直接转换为DataFrame结构即可

完整实现代码

import re
import pandas as pd

def parse_exp_txt(file_path):
    res = {}
    # 匹配SVM准确率的正则:捕获C值和对应的准确率
    svm_pattern = re.compile(r'SVM Classification accuarcy scores \(C=([\d.]+)\): ([\d.]+)')
    # 匹配普通键值对的正则
    kv_pattern = re.compile(r'^([^:]+):\s*(.+?)(\s*\(|$)')
    
    with open(file_path, 'r', encoding='utf-8') as f:
        lines = [line.strip() for line in f if line.strip()]
    
    for line in lines:
        # 匹配SVM准确率行
        svm_match = svm_pattern.match(line)
        if svm_match:
            c_val = svm_match.group(1).replace('.', '_')
            res[f'svm_acc_c{c_val}'] = float(svm_match.group(2))
            continue
        # 匹配总运行时间
        if line.startswith('Total runtime:'):
            res['total_runtime'] = float(line.split(':')[1].strip().split(' ')[0])
            continue
        # 匹配普通配置键值对
        kv_match = kv_pattern.match(line)
        if kv_match:
            key = kv_match.group(1).strip()
            val = kv_match.group(2).strip()
            # 自动转换数值类型
            if val.isdigit():
                val = int(val)
            elif val.replace('.', '', 1).isdigit():
                val = float(val)
            res[key] = val
    # 增加文件名标识方便后续区分
    res['file_name'] = file_path
    return res

# 依次解析两个目标文件
file_list = ['foo1.txt', 'foo2.txt']
all_data = [parse_exp_txt(f) for f in file_list]
# 转换为Pandas DataFrame
df = pd.DataFrame(all_data)

# 可打印查看结果
print(df.head())

输出说明

生成的DataFrame每一行对应一个txt文件的全部参数,包含所有配置项、4种C值对应的SVM准确率、总运行时间、文件名标识字段,可直接用于后续的对比分析。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 14:57:03