You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何替换文件指定行范围内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. 行号以1为起始,与templist的定义逻辑一致;
  2. 第23-30列对应8个字符位置,替换为8个空格,保证列对齐;
  3. 自动处理行长度不足30列的情况,避免索引越界错误。

内容的提问来源于stack exchange,提问作者swiss army knive

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 10:01:13