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

如何读取管道分隔文本文件 筛选排序追加metadata后解析为指定JSON

管道分隔文本转指定结构JSON实现方案

直接用Python标准库即可完成需求,无需安装额外依赖,实现逻辑完全匹配要求:

实现步骤

  • 读取管道符分隔的文本文件,将第一行识别为表头,跳过空行
  • 逐行解析内容时,仅保留Order/AA/BB/CC四个字段,丢弃不需要的DD字段
  • 为每条解析后的记录追加空对象类型的metadata字段
  • 对BB字段值做截断处理,去掉Cdd.前缀得到实际类型值;将CC字段的true/false字符串转为布尔值,对应nullable字段
  • 将所有记录按Order字段的数值做升序排序
  • 按要求组装最终结构,外层固定type值为struct,处理好的记录存入fields数组,最终输出标准JSON格式

可直接运行的代码

import json

# 替换为你的管道分隔文本文件实际路径
INPUT_FILE_PATH = "./data.txt"

parsed_records = []
with open(INPUT_FILE_PATH, "r", encoding="utf-8") as f:
    # 过滤空行
    valid_lines = [line.strip() for line in f if line.strip()]
    # 跳过第一行表头,逐行解析数据
    for raw_line in valid_lines[1:]:
        field_values = raw_line.split("|")
        # 提取需要的字段并做格式转换
        order_num = int(field_values[0])
        field_name = field_values[1]
        field_type = field_values[2].removeprefix("Cdd.")
        is_nullable = field_values[3].lower() == "true"
        # 追加metadata字段后存入列表
        parsed_records.append({
            "_order": order_num,
            "metadata": {},
            "name": field_name,
            "type": field_type,
            "nullable": is_nullable
        })

# 按Order字段数值升序排序
parsed_records.sort(key=lambda x: x["_order"])

# 组装最终结果结构,去掉排序用的临时_order字段
final_result = {
    "fields": [
        {
            "metadata": record["metadata"],
            "name": record["name"],
            "type": record["type"],
            "nullable": record["nullable"]
        } for record in parsed_records
    ],
    "type": "struct"
}

# 打印结果,需要写入文件可以放开下方注释
print(json.dumps(final_result, indent=2, ensure_ascii=False))
# with open("./result.json", "w", encoding="utf-8") as f:
#     json.dump(final_result, f, indent=2, ensure_ascii=False)

运行效果

传入你给出的示例输入文件,运行后输出的JSON完全符合要求:

{
  "fields": [
    {
      "metadata": {},
      "name": "status3",
      "type": "Float",
      "nullable": false
    },
    {
      "metadata": {},
      "name": "status1",
      "type": "int",
      "nullable": true
    },
    {
      "metadata": {},
      "name": "status2",
      "type": "String",
      "nullable": true
    }
  ],
  "type": "struct"
}

注意:如果你的文本文件不是utf-8编码,请对应修改open函数里的encoding参数,避免读取乱码。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 15:09:17