如何用Python拆分管道符分隔的文本文件并生成与属性值数量匹配的列
竖线分隔属性文本转指定格式DataFrame解决方案
直接用Python+Pandas即可实现需求,处理逻辑如下:
- 逐行读取文本文件,按
|拆分每一行内容,第一部分为属性名,剩余部分为该属性对应的所有取值 - 对单取值的属性直接保留原属性名作为标签,多取值的属性按取值序号拼接
_val_序号作为新标签 - 将所有生成的标签和对应取值整理后转换为DataFrame即可
示例代码:
import pandas as pd # 替换为你的实际文件路径 file_path = "your_file.txt" res_list = [] with open(file_path, "r", encoding="utf-8") as f: for line in f: # 去除首尾空白符,跳过空行 line_content = line.strip() if not line_content: continue split_parts = line_content.split("|") attr = split_parts[0] val_list = split_parts[1:] # 遍历每个取值生成对应标签 for seq, val in enumerate(val_list, start=1): if len(val_list) == 1: new_attr = attr else: new_attr = f"{attr}_val_{seq}" # 如需保留字符串格式可去掉int()转换 res_list.append([new_attr, int(val)]) # 转换为DataFrame,可根据需求修改列名 df = pd.DataFrame(res_list, columns=["属性标签", "取值"]) print(df)
运行输出结果:
属性标签 取值 0 Attribute1 6 1 Attribute2_val_1 10 2 Attribute2_val_2 15 3 Attribute2_val_3 27 4 Attribute3_val_1 3 5 Attribute3_val_2 7
注:你给出的预期输出存在笔误,Attribute2的第三个取值27对应的标签应为
Attribute2_val_3,上述代码逻辑符合实际属性对应规则。
内容的提问来源于stack exchange,提问作者vandu
相关产品推荐
相关产品推荐

