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

如何获取被替换键值的行号?合并函数实现替换时返回行号

合并函数实现替换并获取行号

直接上修改后的合并函数,同时修正原代码里的逻辑问题(比如无法正确跟踪行号、全局变量滥用等):

old_new_dict = {'hi':'bye','old':'new'}

def replace_and_track_line_numbers(file_path):
    modified_lines = []
    replacement_records = []  # 存储格式:(行号, 原键, 替换后值)

    with open(file_path, 'r', encoding='utf-8') as f:
        for line_num, line in enumerate(f, start=1):
            modified_line = line
            # 检查当前行是否包含需要替换的键
            for old_key, new_val in old_new_dict.items():
                if old_key in modified_line:
                    modified_line = modified_line.replace(old_key, new_val)
                    replacement_records.append((line_num, old_key, new_val))
            modified_lines.append(modified_line)
    
    # 将修改后的内容写回文件(不需要保存可注释此段)
    with open(file_path, 'w', encoding='utf-8') as f:
        f.writelines(modified_lines)
    
    return replacement_records

# 使用示例
if __name__ == "__main__":
    records = replace_and_track_line_numbers("你的文件路径.txt")
    if records:
        print("替换记录:")
        for line_num, old, new in records:
            print(f"第{line_num}行:将'{old}'替换为'{new}'")
    else:
        print("未找到需要替换的内容")

关键说明

  • 用with语句处理文件,自动管理文件打开/关闭,避免资源泄漏
  • 逐行遍历文件,enumerate(start=1)直接从1开始计数行号,符合日常行号习惯
  • 每一行单独处理替换,确保精准对应行号;若一行包含多个需替换的键,会分别记录每个键的替换信息
  • 函数返回所有替换记录,方便后续查看或处理;写回文件的逻辑可选,按需保留

内容的提问来源于stack exchange,提问作者pkk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 14:30:38