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

如何用Python拆分竖线分隔文本文件并按条件选取列生成DataFrame

竖线分隔文本按规则生成DataFrame方案

需求说明

需要处理以|作为分隔符的文本文件,按每行第二列的取值规则筛选提取数据,最终生成指定格式的DataFrame。

原始文本样例

Attribute1|Number|7
Attribute2|Text||"sample text"
Attribute3|Columns|4||"data1"|"data2"|"data3"|"data4"

处理规则

  • 第二列为Number时:取第三字段内容作为值,第一列拼接_value作为标识
  • 第二列为Text时:取第四字段内容作为值,第一列拼接_value作为标识
  • 第二列为Columns时:以第三字段的数值为条数,拆分后续有效字段生成多条数据,第一列拼接_value_序号(序号从0开始)作为标识

Python实现代码

依赖pandas库,代码如下:

import pandas as pd

# 读取并拆分原始文本行
with open("目标文件路径.txt", "r", encoding="utf-8") as f:
    raw_lines = [line.strip().split("|") for line in f if line.strip()]

processed_data = []
for line in raw_lines:
    attr_name = line[0]
    data_type = line[1]
    if data_type == "Number":
        processed_data.append({
            "Col_1": f"{attr_name}_value",
            "Col_2": line[2]
        })
    elif data_type == "Text":
        processed_data.append({
            "Col_1": f"{attr_name}_value",
            "Col_2": line[3]
        })
    elif data_type == "Columns":
        count = int(line[2])
        # 过滤空字段后取指定数量的有效数据
        value_list = [item for item in line[4:] if item][:count]
        for idx, value in enumerate(value_list):
            processed_data.append({
                "Col_1": f"{attr_name}_value_{idx}",
                "Col_2": value.strip('"') # 可根据需要保留或去掉引号
            })

# 生成目标DataFrame
target_df = pd.DataFrame(processed_data)
print(target_df)

输出结果

Col_1        Col_2
0   Attribute1_value            7
1   Attribute2_value  "sample text"
2  Attribute3_value_0        data1
3  Attribute3_value_1        data2
4  Attribute3_value_2        data3
5  Attribute3_value_3        data4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 00:24:01