如何替换文件指定行范围内23-30列的内容为空格?
需求与解决方案
问题描述
待处理的文件内容格式如下:
For M5|Adr 11|KD1 12:29:09 1| For M5|Adr 12|KD1 8964523 12:34:173 1|Lr For M5|Adr 13|KD1 1000 12:34:563 1|Lv For M5|Adr 14|KD1 bvff123 12:34:56 1| For M5|Adr 15|KD1 12:39:063 1|Lr
已通过以下代码确定需要编辑的行范围(行号从1开始计数,例如range(5,15)对应第5到第14行):
templist = list(range(anfzahl+3, endzahl-4))
需求:将templist指定的行中,第23至30列的内容(无论字母、数字或空白)替换为空格。
实现函数
以下是直接可用的Python函数,完成指定修改:
def modify_columns_in_lines(file_path, target_lines): # 读取文件所有行 with open(file_path, 'r', encoding='utf-8') as f: lines = f.readlines() # 遍历目标行(行号从1开始) for line_num in target_lines: # 校验行号有效性 if not (1 <= line_num <= len(lines)): continue original_line = lines[line_num - 1] # 计算目标列对应的字符串索引:23-30列对应0索引的22到29(共8个字符) start_idx = 22 end_idx = 30 # 切片左闭右开,取到30即可覆盖到第30列 # 处理行长度不足的情况,先补空格至足够长度 if len(original_line) < end_idx: padded_line = original_line.ljust(end_idx) modified_line = padded_line[:start_idx] + ' ' * 8 + original_line[end_idx:] else: modified_line = original_line[:start_idx] + ' ' * 8 + original_line[end_idx:] lines[line_num - 1] = modified_line # 将修改后的内容写回文件 with open(file_path, 'w', encoding='utf-8') as f: f.writelines(lines)
使用说明
调用函数时传入文件路径和目标行列表即可:
# 假设templist已定义 modify_columns_in_lines("your_target_file.txt", templist)
注意事项
- 行号以1为起始,与
templist的定义逻辑一致; - 第23-30列对应8个字符位置,替换为8个空格,保证列对齐;
- 自动处理行长度不足30列的情况,避免索引越界错误。
内容的提问来源于stack exchange,提问作者swiss army knive
相关产品推荐
相关产品推荐

