如何用Python移除100MB pipe分隔符文件第二列的多余分隔符
Python 处理管道分隔符异常行的实现方案
- 全程采用逐行读写的方式,不需要将整个100MB文件加载到内存,内存占用稳定在KB级别,完全适配需求
- 逻辑判断轻量化,处理速度快,普通机械硬盘也能在几秒内完成处理
核心逻辑说明
正常行按|分割后长度为5,异常行分割后长度为6,仅对长度为6的行做合并处理:将第2、3个分割结果合并为新的第二列,其余列保持原有顺序即可消除第二列多余的|符号。
完整实现代码
# 替换为你自己的输入、输出文件路径 input_path = "原始文件路径.txt" output_path = "修正后文件路径.txt" with open(input_path, 'r', encoding='utf-8') as in_f, open(output_path, 'w', encoding='utf-8') as out_f: for line in in_f: # 仅移除行尾换行符,保留行内原始空格格式 stripped_line = line.rstrip('\n') parts = stripped_line.split('|') # 正常行直接原样写回 if len(parts) == 5: out_f.write(line) # 仅处理多1个分隔符的异常行 elif len(parts) == 6: corrected_parts = [ parts[0], f"{parts[1]}{parts[2]}", parts[3], parts[4], parts[5] ] out_f.write('|'.join(corrected_parts) + '\n') # 其他异常长度行默认原样写回,避免数据丢失,可自行补充处理逻辑 else: out_f.write(line)
注意事项
- 处理完成后可先抽查异常行的修正结果,确认符合预期后再替换原文件
- 如果文件编码不是UTF-8,将代码中的
encoding参数修改为对应编码(比如GBK)即可
内容的提问来源于stack exchange,提问作者seanarcher7
相关产品推荐
相关产品推荐

