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

如何用Python解析以‘/’和‘//’为分隔符的纯文本并转JSON?

解析自定义分隔文本并转换为JSON的实现方案

记录结构分析

你的文本记录有以下特征:

  • 单条完整记录由多行组成,以//标记结束
  • 元素用单斜杠/分隔,短横-表示空值
  • 示例完整记录:

US/CIV/JOHN SMITH/-/-/Z/-/2018-03-25/BLUE/
159/AZ/AUDI/2015//

实现步骤(以Python为例)

  1. 读取并拼接完整记录:逐行读取文本,积累元素直到遇到//结尾的行,形成单条完整记录
  2. 处理空值与元素拆分:拆分元素后将-转为null(JSON标准空值),过滤掉拆分产生的空字符串
  3. 字段映射与JSON转换:给元素指定业务字段名,将记录转为字典后序列化为JSON

代码示例

import json

# 请根据实际业务需求修改字段名
FIELD_NAMES = [
    "country", "identity", "name", "field_4", "field_5", 
    "field_6", "field_7", "date", "color", "id", 
    "state", "car_brand", "car_year"
]

def parse_text_to_json(file_path):
    records = []
    current_elements = []
    
    with open(file_path, 'r', encoding='utf-8') as f:
        for line in f:
            stripped_line = line.strip()
            if not stripped_line:
                continue
            
            # 拆分当前行元素,过滤空字符串(行尾/导致的空元素)
            line_elements = [elem for elem in stripped_line.split('/') if elem]
            
            if stripped_line.endswith('//'):
                # 移除//拆分出的最后一个空元素
                line_elements = line_elements[:-1]
                current_elements.extend(line_elements)
                
                # 处理空值:将'-'转为None(JSON序列化后为null)
                processed_elements = [None if elem == '-' else elem for elem in current_elements]
                
                # 映射字段名,生成记录字典
                record = dict(zip(FIELD_NAMES[:len(processed_elements)], processed_elements))
                records.append(record)
                current_elements = []
            else:
                current_elements.extend(line_elements)
    
    # 序列化为格式化的JSON字符串
    return json.dumps(records, indent=2, ensure_ascii=False)

# 调用示例(替换为你的文件路径)
# result = parse_text_to_json("your_records.txt")
# print(result)

关键说明

  • 字段名定义:原记录没有字段标识,必须根据业务场景自定义FIELD_NAMES,确保每个元素对应正确的业务含义
  • 空值处理:代码中将-转为None,JSON输出时会变成null,符合JSON的空值规范
  • 边界处理:自动跳过空行,过滤拆分产生的空元素,避免无效数据干扰

示例输出

处理你提供的示例文本后,输出的JSON格式如下:

[
  {
    "country": "US",
    "identity": "CIV",
    "name": "JOHN SMITH",
    "field_4": null,
    "field_5": null,
    "field_6": "Z",
    "field_7": null,
    "date": "2018-03-25",
    "color": "BLUE",
    "id": "159",
    "state": "AZ",
    "car_brand": "AUDI",
    "car_year": "2015"
  },
  {
    "country": "US",
    "identity": "CTR",
    "name": "BILL STONE",
    "field_4": "5",
    "field_5": "TEXT",
    "field_6": "G",
    "field_7": "AU24",
    "date": "2021-06-18",
    "color": "GREEN",
    "id": "174",
    "state": "CO",
    "car_brand": "BENZ",
    "car_year": "2019"
  }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 06:05:22