Python实现文本文件小数转整数、首列填充值并跳过前13行写入
Python批量文本处理实现方案
前置准备
- 把所有需要处理的文本文件统一放到同一个文件夹中,避免混杂其他无关文件
- 提前确定需要填充到第一列逗号前的指定内容(可以是数字、字符串等)
- 处理后的文件会自动生成到新文件夹,不会修改原文件,不用担心原始数据丢失
完整可运行代码
import os # -------------------------- 请修改以下配置参数 -------------------------- RAW_FOLDER = "raw_data" # 存放待处理文件的文件夹名 PROCESSED_FOLDER = "processed_data" # 存放处理后文件的文件夹名 FILL_VALUE = "你的填充值" # 这里替换成你要填到第一列逗号前的内容,比如填"100"或者"北京"等 ROUND_DECIMAL = True # 小数转整数是否四舍五入,填False则直接截断小数部分 # ----------------------------------------------------------------------- # 自动创建输出文件夹 if not os.path.exists(PROCESSED_FOLDER): os.mkdir(PROCESSED_FOLDER) # 遍历所有待处理的txt文件 for filename in os.listdir(RAW_FOLDER): if not filename.endswith(".txt"): continue # 跳过非txt文件 raw_path = os.path.join(RAW_FOLDER, filename) processed_path = os.path.join(PROCESSED_FOLDER, filename) # 读取原文件所有行 with open(raw_path, "r", encoding="utf-8") as f: lines = f.readlines() # 保留前13行完全不变 processed_lines = lines[:13] # 处理第14行及之后的内容 for line in lines[13:]: line = line.strip() if not line: processed_lines.append("\n") continue # 按逗号拆分字段 parts = line.split(",") # 第一个字段替换为指定填充值 parts[0] = FILL_VALUE # 处理后续字段,小数转整数 for i in range(1, len(parts)): item = parts[i].strip() try: num = float(item) if ROUND_DECIMAL: parts[i] = str(round(num)) else: parts[i] = str(int(num)) except: # 非数值内容保持不变 pass # 拼接回逗号分隔的行 new_line = ",".join(parts) + "\n" processed_lines.append(new_line) # 写入处理后的文件 with open(processed_path, "w", encoding="utf-8") as f: f.writelines(processed_lines) print(f"文件 {filename} 处理完成")
使用步骤
- 在和Python代码同一个目录下新建名为
raw_data的文件夹,把所有待处理的txt文件放到这个文件夹里 - 修改代码里
FILL_VALUE的取值,换成你需要填充的内容 - 运行代码,处理好的文件会自动生成到
processed_data文件夹中
内容的提问来源于stack exchange,提问作者Sara
相关产品推荐
相关产品推荐

