如何用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
相关产品推荐
相关产品推荐

