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

如何用Python/JS/PHP将文本文件转为带表头CSV或键值对JSON

定制文本转结构化CSV/JSON实现方案(Python实现)

核心思路

用Python标准库就能完成全流程,不需要安装第三方依赖,整体流程分4步:

  • 逐行读取原始文本文件,过滤空行、无效的表头/汇总行
  • 按照源文本的字段分隔规则(固定宽度/特定分隔符)拆分每行内容,和目标表头做映射
  • 清洗字段内容,去除多余空格、换行符,补全缺失字段
  • 按需输出带表头的CSV文件,或者键值对结构的JSON文件

可直接运行的代码

import csv
import json

# -------------------------- 配置项,按需修改 --------------------------
SOURCE_FILE = "./source.txt"       # 替换为你的源文本文件路径
SAVE_CSV_PATH = "./result.csv"     # 生成的CSV文件保存路径
SAVE_JSON_PATH = "./result.json"   # 生成的JSON文件保存路径
# 替换为参考示例里的实际表头字段,顺序要和源文件字段顺序一致
CSV_HEADERS = ["序号", "交易时间", "交易金额", "交易对方", "交易类型", "交易状态", "备注"]
# ----------------------------------------------------------------------

def parse_single_line(line: str):
    """单行文本解析逻辑,根据源文件实际格式调整"""
    content = line.strip()
    # 空行直接跳过
    if not content:
        return None
    # 跳过不需要的汇总行、标题行,可根据源文件特征加判断规则
    if content.startswith(("总计", "汇总", "序号")):
        return None
    
    # -------------------------- 字段拆分规则,按需修改 --------------------------
    # 规则1:如果是多空格/制表符分隔的文本,用下面这行
    fields = [i.strip() for i in content.split() if i.strip()]
    # 规则2:如果是固定宽度的文本,注释掉上面那行,用切片方式,示例如下
    # fields = [
    #     content[0:8].strip(),   # 第1个字段,取第0-8位字符
    #     content[8:28].strip(),  # 第2个字段,取第8-28位字符
    #     content[28:40].strip(), # 第3个字段,取第28-40位字符
    #     # 后续字段按实际宽度补全即可
    # ]
    # 规则3:如果是特定字符分隔(比如|、逗号),直接在split里传入分隔符即可
    # fields = [i.strip() for i in content.split("|") if i.strip()]
    # --------------------------------------------------------------------------

    # 校验字段数量和表头长度匹配,不匹配的行打印出来方便排查
    if len(fields) != len(CSV_HEADERS):
        print(f"格式异常跳过:{content},字段数为{len(fields)},预期{len(CSV_HEADERS)}")
        return None
    return dict(zip(CSV_HEADERS, fields))

if __name__ == "__main__":
    result_list = []
    # 读取源文件
    with open(SOURCE_FILE, "r", encoding="utf-8") as f:
        for raw_line in f:
            parsed = parse_single_line(raw_line)
            if parsed:
                result_list.append(parsed)
    
    # 写入CSV文件,utf-8-sig编码兼容Excel直接打开不乱码
    with open(SAVE_CSV_PATH, "w", encoding="utf-8-sig", newline="") as f:
        writer = csv.DictWriter(f, fieldnames=CSV_HEADERS)
        writer.writeheader()
        writer.writerows(result_list)
    print(f"CSV生成完成,有效记录共{len(result_list)}条,保存路径:{SAVE_CSV_PATH}")

    # 写入JSON文件
    with open(SAVE_JSON_PATH, "w", encoding="utf-8") as f:
        json.dump(result_list, f, ensure_ascii=False, indent=2)
    print(f"JSON生成完成,有效记录共{len(result_list)}条,保存路径:{SAVE_JSON_PATH}")

调整注意事项

  • 首次运行先把配置项里的文件路径、表头列表替换成实际内容
  • 根据源文件的实际格式选对应的字段拆分规则,代码里已经列了三种最常见的文本分隔场景,注释掉不用的规则即可
  • 如果遇到解析错位的问题,先把异常行打印出来,调整切片位置或者分隔规则即可,一般跑2-3次就能把规则调对
  • 生成的CSV直接用Excel打开不会乱码,JSON是标准的数组包裹键值对结构,可以直接给其他程序调用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 03:24:19