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

求助:用Python实现固定结构TXT数据提取与表格化转换

如何用Python批量转换老旧程序的特殊格式输出为表格?

我正在使用一款老旧程序,其批量查询结果的输出格式十分特殊。查询对象A、B、C的输出样例如下:

name : A
------
Group 1 
  p1 : 11
  p2 : 12

Group 2
  p3 : 23
  p4 : 24


======

name : B
------
Group 1 
  p1 : 11
  p2 : 12

Group 2
  p3 : 23
  p4 : 24

======

name : C
------
Group 1 
  p1 : 11
  p2 : 12

Group 2
  p3 : 23
  p4 : 24

我希望将这些数据转换为列名为A、B、C,行名为p1、p2等的表格。我有初步思路但不知如何自动化实现:

  • 以======为分隔符将每个对象的内容拆分到单独的TXT文件;
  • 用Excel以:为分隔符读取文件,得到含两列(p描述符与对应值)的CSV文件;
  • 将所有CSV文件合并为一个以对象为列、px为行的CSV文件。

由于对象数量达数百个,想请教如何用Python实现,求相关建议、技巧或方案。


解决方案:直接解析原始文本并生成目标表格

不需要拆分文件再合并,直接用Python一次性处理原始文本效率更高,步骤如下:

1. 核心思路

  • 读取原始文件内容,按======分割出每个对象的区块
  • 遍历每个区块,提取对象名称(name : X中的X)和所有pX : 值的键值对
  • 将所有对象的键值对整理成字典,用pandas生成目标格式的表格并保存为CSV

2. 代码实现

import pandas as pd

# 读取原始数据文件(替换为你的文件路径)
with open('原始输出.txt', 'r', encoding='utf-8') as f:
    content = f.read()

# 按分隔符分割每个对象的区块,过滤空区块
blocks = [block.strip() for block in content.split('======') if block.strip()]

# 存储所有对象的数据:key是对象名,value是{p1:值, p2:值...}
data_dict = {}

for block in blocks:
    lines = [line.strip() for line in block.split('\n') if line.strip()]
    obj_name = None
    params = {}
    for line in lines:
        # 提取对象名称
        if line.startswith('name :'):
            obj_name = line.split(':', 1)[1].strip()
        # 提取参数行(以p开头的键值对)
        elif ' : ' in line and line.split(' : ')[0].strip().startswith('p'):
            key, value = line.split(' : ', 1)
            params[key.strip()] = value.strip()
    if obj_name and params:
        data_dict[obj_name] = params

# 转换为DataFrame,转置后得到行是pX、列是对象名的表格
df = pd.DataFrame(data_dict).fillna('')

# 保存为CSV文件
df.to_csv('转换结果.csv', encoding='utf-8-sig')

3. 关键技巧

  • 避免中间文件:直接在内存中处理所有数据,省去创建数百个TXT/CSV文件的开销
  • 鲁棒性处理:用strip()去除多余空格,过滤空行,避免因格式小差异导致解析失败
  • 灵活调整格式:如果需要行是对象名、列是pX的表格,只需将pd.DataFrame(data_dict)改为pd.DataFrame(data_dict).T即可

4. 依赖说明

需要安装pandas库,执行命令安装:

pip install pandas

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 19:31:22