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

Python实现混乱格式TXT转CSV:文本数据清洗方法问询

解决TXT转CSV的多分隔符数据清洗问题

针对这种包含多种分隔符的文本行,用正则表达式提取字段是最高效的方案,比多次split更稳定。以下是Python实现步骤:

核心思路

用正则匹配每行的四个关键字段:邮箱、验证码、状态、日期,忽略中间的分隔符和多余空格,再将字段按CSV格式拼接。

完整代码实现

import re

# 读取原始TXT文件
with open('input.txt', 'r', encoding='utf-8') as infile:
    lines = infile.readlines()

# 准备正则匹配规则,精准匹配每行的四个字段
pattern = re.compile(r'([\w@.]+):([\w]+)\s*\|\s*(Status)\s*-\s*(\d{4}-\d{2}-\d{2})')

# 处理每行并生成CSV内容
csv_lines = []
for line in lines:
    line = line.strip()
    if not line:  # 跳过空行
        continue
    match = pattern.match(line)
    if match:
        # 提取字段并清理多余空格,按CSV格式拼接
        email, code, status, date = [item.strip() for item in match.groups()]
        csv_line = f"{email}, {code}, {status}, {date}"
        csv_lines.append(csv_line)

# 写入CSV文件
with open('output.csv', 'w', encoding='utf-8', newline='') as outfile:
    # 可选:写入CSV表头
    outfile.write("Email, Code, Status, Date\n")
    outfile.write('\n'.join(csv_lines))

代码说明

  • 正则表达式([\w@.]+):([\w]+)\s*\|\s*(Status)\s*-\s*(\d{4}-\d{2}-\d{2}):
    • ([\w@.]+):匹配邮箱格式(包含字母、数字、@、.)
    • :([\w]+):匹配冒号后的验证码(字母数字组合)
    • \s*\|\s*:匹配|前后的任意数量空格
    • (Status)\s*-\s*:匹配Status和横杠前后的任意空格
    • (\d{4}-\d{2}-\d{2}):匹配YYYY-MM-DD格式的日期
  • 自动跳过空行,避免CSV出现无效行
  • 用strip()统一清理字段前后的空格,保证输出格式一致

如果你的TXT里有其他格式变体,只需微调正则表达式的匹配规则即可适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 12:40:50