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
相关产品推荐
相关产品推荐

