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

如何用Python拆分.dat文件数据并导出含完整字段的Excel?

解决.dat文件多字段拆分并导出Excel的问题

你的原有代码用sep='[|,=]'同时按三种符号拆分,会把键(如0、1、4)和对应值拆分成独立列,再加上usecols只指定了3列,所以只能得到三个字段。要提取所有指定字段,需要分步骤处理数据结构:

  • 每行数据先按|拆分,提取前半部分的Time、Request,以及后半部分包含ISIN和键值对的字符串
  • 从该字符串中分离出ISIN Code和后续的键值对(如0=1000这类)
  • 将键值对转为字典,和前面的字段合并成完整的一行数据

修正后的代码

import pandas as pd

# 处理单条数据的函数
def process_line(line):
    # 按|拆分每行,过滤空字符串
    parts = [p.strip() for p in line.strip().split('|') if p.strip()]
    # 提取基础字段
    result = {
        'Time': parts[0],
        'Request': parts[5]
    }
    # 分离ISIN Code和后续键值对
    isin_kv_part = parts[9].split(',', 1)
    result['ISIN Code'] = isin_kv_part[0]
    # 解析键值对并添加到结果字典
    kv_pairs = isin_kv_part[1].split(',')
    for pair in kv_pairs:
        key, value = pair.split('=', 1)
        result[key] = value
    return result

# 读取文件并处理所有行
data = []
with open('TEST1.dat', 'r', encoding='utf-8') as f:
    for line in f:
        if line.strip():
            data.append(process_line(line))

# 转换为DataFrame并导出Excel
df = pd.DataFrame(data)
df.to_excel('output_full.xlsx', sheet_name='sheet1', index=False)

代码说明

  1. process_line函数负责单条数据的解析:
    • 按|拆分后过滤空值,避免空字段干扰
    • 直接从拆分结果中提取Time和Request
    • 用第一个逗号拆分出ISIN Code,剩余部分按逗号拆分键值对,再按=分离键和值存入字典
  2. 遍历文件所有行,收集处理后的完整数据
  3. 转换为DataFrame后导出,index=False避免生成额外索引列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 16:20:41