如何使用Python编辑txt文件多组内容并保留原有空格格式
Python实现TXT文件指定内容替换方案
核心实现逻辑
要在保留姓名与后缀间原有空格/制表符排版的前提下,将每行姓名后的任意内容替换为顺序数字,核心是精准拆分每行的三个部分:开头的姓名字段、姓名后的连续空白分隔符、待替换的原后缀内容,替换后缀后按原格式拼接即可,不需要手动调整间距。
完整代码
import re def rewrite_target_txt(input_file: str, output_file: str): # 正则匹配行结构:(姓名非空内容)(中间空白字符)待替换的任意内容 line_match_rule = re.compile(r'^(\S+)(\s+).*$') # 逐行读写文件,避免大文件占用过多内存 with open(input_file, 'r', encoding='utf-8') as f_read, open(output_file, 'w', encoding='utf-8') as f_write: # 序号从1开始计数,和行顺序一一对应 for line_num, line_content in enumerate(f_read, start=1): # 去除行尾原生换行符,后续统一加换行避免格式错乱 pure_line = line_content.rstrip('\r\n') match_result = line_match_rule.match(pure_line) # 不符合格式的行(空行、无分隔符的行)直接原样写入,不做修改 if not match_result: f_write.write(pure_line + '\n') continue name, origin_space = match_result.groups() # 按原格式拼接新行:姓名 + 原有空白 + 对应序号 new_line = f"{name}{origin_space}{line_num}\n" f_write.write(new_line) if __name__ == "__main__": # 替换为自己的文件路径即可,如果要覆盖原文件请提前做好备份 rewrite_target_txt("your_original_file.txt", "modified_result.txt")
使用说明
- 代码默认使用UTF-8编码读写文件,如果你的文件是其他编码(比如GBK),修改
open函数里的encoding参数即可 - 姓名和序号之间的所有空格、制表符会完全保留原文件的排版,不会出现间距错乱的问题
- 序号严格按照文件内的行顺序从1开始生成,和原文件行一一对应
- 空行、不符合「内容+空白+内容」格式的行会原样保留,不会被误修改
内容的提问来源于stack exchange,提问作者Ramenmaestro
相关产品推荐
相关产品推荐

