Python批量处理txt文件按数据索引设置两种分隔符修正数据格式
解决方案
你之前的问题出在直接全局替换所有空格为逗号,没有区分不同字段的分隔规则,导致时分秒被拆分为独立的逗号分隔字段。正确的处理逻辑如下:
- 每行先按空白符拆分得到独立字段列表,用
split()方法即可自动合并连续空格、过滤空值,适配原始数据中字段间多空格的情况 - 按索引取对应字段重新拼接:索引0为日期字段,索引1/2/3分别为时分秒,拼接为
HH:MM:SS格式,索引4为第一个数值字段,索引5/6为末尾两个数值字段,中间补两个空字段即可 - 大文件采用逐行迭代处理,不要一次性读取整个文件,避免占用过高内存,同时支持批量遍历目录下所有txt文件
完整实现代码
import os # 配置参数,可根据实际路径修改 input_dir = os.path.expanduser("~/Desktop/ssdat/") output_dir = os.path.expanduser("~/Desktop/ssdat_formatted/") # 自动创建输出目录 os.makedirs(output_dir, exist_ok=True) # 遍历输入目录下所有txt文件 for filename in os.listdir(input_dir): if not filename.endswith(".txt"): continue input_path = os.path.join(input_dir, filename) output_path = os.path.join(output_dir, filename) # 逐行处理写入 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: line = line.strip() if not line: continue # 拆分字段,自动处理多空格 fields = line.split() # 校验字段数量是否符合要求,可根据实际情况调整或删除校验 if len(fields) != 7: # 异常行可选择写入日志,这里直接跳过 continue # 按目标格式拼接 formatted_line = f"{fields[0]},{':'.join(fields[1:4])},{fields[4]},,,{fields[5]},{fields[6]}\n" out_f.write(formatted_line)
注意事项
- 代码不会修改原始文件,所有转换后文件都会写入独立的输出目录,避免原始数据丢失
- 单文件9万行的处理速度很快,1000个文件批量处理无需额外优化
- 如果原始数据字段数量有变动,调整
fields的索引和拼接规则即可
内容的提问来源于stack exchange,提问作者Brian
相关产品推荐
相关产品推荐

