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

Python如何为txt文件添加分隔符实现数据转CSV

文本转指定格式CSV的实现参考思路

核心处理流程

逐行读取原始文本文件,按行的特征匹配规则拆分字段,最后按CSV规范输出即可,具体步骤:

  • 第一步:逐行读入文本,先去除每行首尾的空白字符(空格、制表符、多余换行),跳过完全为空的行。
  • 第二步:按规则给三列赋值,三列分别对应「普通标识(a/b类)」「$开头标识」「分隔符后内容」,匹配优先级从高到低:
    • 若行首为$:按第一个=分割整行,$和=之间的内容去空白后填入第二列,=之后的内容去空白后填入第三列,第一列留空。
    • 若行内包含:且行首不是$:按第一个:分割整行,:之前的内容去空白后填入第一列,:之后的内容去空白后填入第三列,第二列留空。
    • 剩余不满足上面两个规则的行(比如示例中单独的number行):可以直接将整行内容填入第三列,前两列留空;如果业务不需要这类无标识行,也可以直接跳过不写入。
  • 第三步:拼接CSV行时注意转义特殊字符:如果字段内容包含逗号、双引号、换行,需要给字段包裹双引号,同时将内容中原有的双引号替换为两个双引号,避免CSV格式解析错误。直接用编程语言自带的CSV库处理可以自动完成转义,不用手动写规则。

最简实现示例(Python)

import csv

with open("你的原始文本文件.txt", "r", encoding="utf-8") as fin, \
     open("输出结果.csv", "w", encoding="utf-8", newline="") as fout:
    csv_writer = csv.writer(fout)
    # 写入CSV表头
    csv_writer.writerow(["普通标识", "$类标识", "内容值"])
    for raw_line in fin:
        line = raw_line.strip()
        if not line:
            continue
        col1, col2, col3 = "", "", ""
        if line.startswith("$"):
            # 处理$开头的行,只按第一个=分割,避免内容里的=被误切
            key_part, val_part = line.split("=", 1)
            col2 = key_part.lstrip("$").strip()
            col3 = val_part.strip()
        elif ":" in line:
            # 处理普通:分隔的行,只按第一个:分割
            key_part, val_part = line.split(":", 1)
            col1 = key_part.strip()
            col3 = val_part.strip()
        else:
            # 处理无分隔符的行
            col3 = line
        csv_writer.writerow([col1, col2, col3])

针对你给出的示例输入,运行上述代码后得到的CSV内容如下:

普通标识,$类标识,内容值
a,,data
b,,data2
,e,data3
,,number
a,,data4 and so on

如果遇到内容中本身包含:或=的场景,可以把字符串分割逻辑换成正则匹配,定位第一个出现的分隔符位置做切片即可,适配性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 03:06:17