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

Python如何在指定分隔符间插入换行 修复<|>分隔的错位CSV行

修复换行错位的<|>分隔CSV文件的实现方法

问题背景

已知CSV文件列数为3,分隔符为<|>,行错位由意外插入的换行符导致,原始数据如下:

PERSON_ID<|>DEPT_ID<|>DATE_JOINED
    AAAAA<|>S1<|>2021/01
/03
    BBBBBB<|>S2<|>2021/02/03
    CCCCC<|>S1<|>2021/03/05

已完成空格移除操作,代码如下:

import re
your_string ="""PERSON_ID<|>DEPT_ID<|>DATE_JOINED
    AAAAA<|>S1<|>2021/01
/03
    BBBBBB<|>S2<|>2021/02/03
    CCCCC<|>S1<|>2021/03/05"""
print(re.sub(r'\s{1,}','',your_string.strip()))

执行后得到无空格连续字符串:

PERSON_ID<|>DEPT_ID<|>DATE_JOINEDAAAAA<|>S1<|>2021/01/03BBBBBB<|>S2<|>2021/02/03CCCCC<|>S1<|>2021/03/05

需要在10位长度的日期末尾插入换行,最终得到规整CSV:

PERSON_ID<|>DEPT_ID<|>DATE_JOINED
AAAAA<|>S1<|>2021/01/03 
BBBBBB<|>S2<|>2021/02/03 
CCCCC<|>S1<|>2021/03/05

实现方案

方法1:按「分隔符+10位日期」规则插入换行

利用日期固定为10位YYYY/MM/DD格式的特性,正则匹配<|>加10位日期的组合,在匹配内容末尾插入换行即可,注意正则中|是特殊字符需要转义,完整代码:

import re

raw_str = """PERSON_ID<|>DEPT_ID<|>DATE_JOINED
    AAAAA<|>S1<|>2021/01
/03
    BBBBBB<|>S2<|>2021/02/03
    CCCCC<|>S1<|>2021/03/05"""

# 移除所有空白字符
clean_str = re.sub(r'\s+', '', raw_str.strip())
# 匹配<|>加10位日期,在末尾加换行
result = re.sub(r'(<\|>\d{4}/\d{2}/\d{2})', r'\1\n', clean_str)
# 移除末尾多余换行
result = result.rstrip('\n')

print(result)

方法2:按列数规则拆分(适用性更强)

如果后续第三列格式可能调整,不依赖日期格式,直接按3列的规则拆分拼接即可:

import re

raw_str = """PERSON_ID<|>DEPT_ID<|>DATE_JOINED
    AAAAA<|>S1<|>2021/01
/03
    BBBBBB<|>S2<|>2021/02/03
    CCCCC<|>S1<|>2021/03/05"""

clean_str = re.sub(r'\s+', '', raw_str.strip())
# 按分隔符拆分所有字段
fields = clean_str.split('<|>')
lines = []
# 每3个字段拼接为一行
for i in range(0, len(fields), 3):
    line = '<|>'.join(fields[i:i+3])
    lines.append(line)
result = '\n'.join(lines)

print(result)

两种方法运行后均可得到符合要求的规整CSV数据。

内容的提问来源于stack exchange,提问作者Barney-LoveStudy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 13:15:00