如何用Python将非表格格式的TXT报告转换为表格格式
解决方法
1. 拆分读取元数据与表格内容
前3行是元数据,后续为表格,可分开处理:
提取元数据中的dates值
先读取前3行,匹配并提取目标值(假设元数据格式为dates: 日期值,可根据实际格式调整):
import pandas as pd # 读取前3行元数据 with open('R1.txt', 'r') as f: metadata = [line.strip() for line in f.readlines()[:3]] # 提取dates值 dates = None for line in metadata: if 'dates' in line.lower(): dates = line.split(':')[1].strip() break
2. 读取并整理表格结构
之前用sep='delimiter'会把整行视为单列,需根据表格实际分隔符(如多空格、制表符)指定sep:
# 跳过前3行元数据,读取表格;若表格首行(原第4行)是表头,用header=0,否则用header=None df = pd.read_csv('R1.txt', sep='\s+', skiprows=3, header=0)
3. 添加并填充dates列
将提取到的日期值批量填充到新列:
if dates: df['dates'] = dates
4. 批量处理多个TXT文件(可选)
若有大量文件,用循环实现批量处理:
import os # 遍历目录下所有TXT文件 txt_files = [f for f in os.listdir('.') if f.endswith('.txt')] all_data = [] for file in txt_files: # 提取当前文件的dates with open(file, 'r') as f: metadata = [line.strip() for line in f.readlines()[:3]] dates = None for line in metadata: if 'dates' in line.lower(): dates = line.split(':')[1].strip() break # 读取表格并添加dates列 df = pd.read_csv(file, sep='\s+', skiprows=3, header=0) df['dates'] = dates all_data.append(df) # 合并所有数据 final_df = pd.concat(all_data, ignore_index=True)
注意事项
- 根据表格实际分隔符调整
sep:制表符用sep='\t',逗号用sep=',' - 若元数据格式不是
key: value,需修改提取逻辑(如按固定位置截取) - 若表格无表头,读取时用
header=None,再通过df.columns = ['列1', '列2', ...]手动设置表头
内容的提问来源于stack exchange,提问作者Carlos de la Peña
相关产品推荐
相关产品推荐

